PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Projekt bazy danych - pola z wartościami null

Jedną z wysoce znormalizowanych opcji jest uczynienie tabel bardziej podobnymi

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
);

gdzie wpisy istnieją tylko w odpowiedniej tabeli powiadomień (użytkownik/firma/grupa) dla danego powiadomienia.

(Nie sądzę, aby było coś złego z kluczami obcymi dopuszczającymi wartość null w sytuacji, gdy wskazuje to, że klucz obcy jest opcjonalny, ale wiele kluczy obcych podobnego typu sprawia wrażenie zdenormalizowanego projektu)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Porównanie tabel tymczasowych dla PostgreSQL i Oracle GTT

  2. AMD, Intel i PostgreSQL

  3. Nowy sposób na spersonalizowanie monitorowania PostgreSQL za pomocą Prometheusa

  4. Operacje bitowe w Postgres

  5. PostgreSQL przez poddźwiękowy