Você está pensando demais na ligação entre opcionalidade e identidade. Até que tudo seja mais natural para você, é melhor pensar neles como sendo completamente não relacionados .
Sobre a opcionalidade, é importante lembrar que a opcionalidade é direcional. Para usar seu exemplo de
employee_equipment
:Claro, os funcionários não precisam de equipamentos. A relação um-para-muitos de employee
para employee_equipment
é opcional. Ao mesmo tempo, olhando pela perspectiva oposta, a relação é obrigatória. Você não pode ter um registro em employee_equipment
a menos que haja um employee
para associá-lo. Identidade não tem nada a ver com opcionalidade, exceto coincidentemente uma relação de identificação é obrigatória da criança para o pai. Se também é obrigatório do pai para a criança, não está aqui nem lá no que diz respeito à identidade.
O que torna um relacionamento identificável é que você precisa saber de qual pai você está falando (assim como algumas outras coisas) para saber de qual criança você está falando. Ou seja, a chave primária do filho deve incluir uma chave estrangeira para o pai.
Tabelas de interseção puras (por exemplo,
employee_equipment
) são bons exemplos disso. A chave primária de uma interseção pura é a combinação das chaves estrangeiras para ambas as tabelas pai. Observe que algumas pessoas também podem adicionar uma chave substituta a esses tipos de tabelas. Não importa tanto do ponto de vista da identidade se houver várias chaves candidatas. O que é importante para determinar a identidade é se a chave estrangeira faz parte de uma chave candidata, quer essa chave candidata seja ou não a chave primária. Outro bom exemplo seria algo como o catálogo de metadados de um banco de dados, onde uma coluna é identificada pela tabela à qual pertence, assim como a tabela é identificada pelo esquema em que está e assim por diante. Saber que uma coluna se chama
NAME
não diz qual coluna é. Sabendo que é o NAME
coluna no CUSTOMER
mesa ajuda. (Você também terá que saber qual esquema CUSTOMER
está dentro, e assim por diante).