Eu gostaria de configurar um banco de dados MySQL simples, mas estou um pouco confuso sobre tudo, então deixe-me tentar explicar...
Eu tenho 4 tabelas relevantes, vamos chamá-las POS
de POS_STRUCT
, POS_STRUCT_DIV
e MEMBERS
.
A relação é assim:
- POS
pode ter muitos, POS_STRUCT
mas um único POS_STRUCT
pode estar associado a apenas um POS
- POS_STRUCT
pode ter muitos, POS_STRUCT_DIV
mas um único POS_STRUCT_DIV
pode estar associado a apenas um POS_STRUCT
- POS_STRUCT_DIV
pode ter muitos, MEMBERS
mas um único MEMBERS
pode estar associado a apenas umPOS_STRUCT_DIV
Minha tabela POS_STRUCT_DIV
consistirá em poucas 'constantes'. Vamos chamá-los de div_1
, div_2
(...) div_n
, e é aqui que começa minha confusão.
Como esta tabela provavelmente nunca mudará os nomes ou a quantidade dessas 'constantes', devo criar uma relação entre POS_STRUCT
e POS_STRUCT_DIV
? Além disso, como os registros em MEMBERS
às vezes serão associados ao POS_STRUCT_DIV
mesmo nome, mas em diferentes POS
e POS_STRUCT
, devo criar chaves estrangeiras para todas as 3 tabelas na MEMBERS
tabela? Qual seria a maneira mais eficiente de resolver essa relação?
Tentei criar um UML para este banco de dados, embora obviamente não tenha certeza se está correto ...:
A menos que você incorpore uma lista de
pos_div_name
em uma coluna com o tipo TEXT, você precisa criar uma tabelaPOS_STRUCT_DIV
(POS_div em seu diagrama), pois ela possui um relacionamento um-para-muitos comPOS_STRUCT
.Você pode usar
pos_div_name
como chave estrangeira noMEMBER
como o nome nunca é alterado. Isso evita que você olhe para cimapos_div_name
ao carregar,MEMBER
mas o tamanho da linha pode ser maior. Então cabe a você.