sql >> Databáze >  >> RDS >> PostgreSQL

Návrh databáze - pole s možností null

Jednou z možností, vysoce normalizované, je vytvořit tabulky podobně jako

create table notifications( 
    notification_id serial primary key, 
    date_created timestamp not null default now(), 
    title_id text not null, 
    message_id text not null, 
    icon text not null default 'logo' 
); 

create table usernotifications
(
    notification_id integer references notifications,
    user_id integer references users
);

create table groupnotifications
(
    notification_id integer references notifications,
    group_id integer references groups
);

create table companynotifications
(
    notification_id integer references notifications,
    company_id integer references companies
);

kde položky existují pouze v příslušné tabulce oznámení (uživatel/společnost/skupina) pro dané oznámení.

(Nemyslím si, že je něco špatného na cizích klíčích s možností null v situaci, kdy to znamená, že cizí klíč je volitelný, ale více cizích klíčů podobného typu působí dojmem denormalizovaného designu)




  1. Chcete načíst data z databáze na základě výběru rozevíracího seznamu pomocí php

  2. Jak řídit, co mohou uživatelé dešifrovat SQL Server Symmetric Key Encryption

  3. Dotaz MySQL s polem časového razítka UNIX

  4. Rychlé tipy pro návrh relační databáze pro MySQL