Sou novo no PostgreSQL e no SQL em geral e tenho alguns problemas para entender PKs, FKs, um ID serial e quando usá-los. Tentarei adicionar informações sobre o que já tentei até agora, mas não consigo me lembrar de tudo, pois fiz muitas tentativas e erros.
https://dbdiagram.io/d/biodeg-65f43429ae072629ce19c2b8
Esta é uma versão reduzida das minhas tabelas. Estou preenchendo os dados de análise e formatação do banco de dados de um arquivo csv via python e sqlalchemy. Atm o banco de dados deveria ser
Por exportação/importação as tabelas obtêm:
- UM novo registro na tabela "Definir metadados". (com "Set" sendo o valor único aqui)
- ATÉ SEIS novos registros na tabela "Measurement Meta Data" (todos com o mesmo valor "Set" do registro adicionado em 1., sendo únicos apenas como uma combinação de "Set" e "Kopf", "ID" ou "SN Nr."
- ATÉ SEIS VEZES 360 novos registros na tabela "Dados de medição" (novamente, a combinação de "Set" e "Kopf" (ou "ID"/"SN Nr") deve funcionar como uma forma de combinar com um registro da tabela "Measurement Meta Data".
Então, minhas perguntas:
- Devo adicionar IDs de série com incremento automático a essas tabelas? Intuitivamente, faz sentido para as tabelas 1 e 2, não tanto para a tabela 3, pois 360 pontos de dados de um único teste não precisam realmente de um ID incrementado?
- Vamos supor que não estou adicionando nenhum ID: uma das minhas ideias de definir PKs, FKs ficou assim:
.
- PK para "Set" na tabela "Set Metadata".
- PK composto para "Set" e "Kopf" na tabela "Measurement Meta Data"
- FK para "Set" na tabela "Measurement Meta Data" REFERENCING "Set" na tabela "Set Metadata".
- FK para "Set" + "Kopf" na tabela "Measurement Data" REFERENCING "Set" e "Kopf" na tabela "Measurement Metadata".
- além disso, acho que tive que definir algumas restrições exclusivas para definir esses FKs.
No entanto, isso não funcionou. No PowerBI, isso resultou em um relacionamento 1:1 entre as Tabelas 1 e 2, que deveria ser uma relação um para muitos (?). Além disso, não houve nenhuma relação entre as tabelas 2 e 3.
Então, de que forma devo usar PK e FK para minhas 3 mesas?
Além disso, se for recomendado adicionar IDs a essas tabelas, digamos "set_id" para a tabela 1 e "measurement_id" para a tabela 2 e estes se tornarão meus PKs. Então eu precisaria de "set_id" como FK na tabela 2, mas como adicionaria o "set_id" à tabela com o mesmo valor do "set_id" referenciado da tabela 1. Afinal, eu precisaria de até 6 registros com o mesmo "set_id".
Muito obrigado antecipadamente e espero que isso não seja pedir muito