Progettazione ERD del database: 2 tipi utente in una tabella

3

Ho letto questo ( Progettazione del database: 3 tipi di utenti, separati o una tabella? )

Ho deciso di inserire admin e utente normale in una tabella poiché gli attributi sono simili:

fullname,
address,
phone,
email,
gender
...

Poi voglio disegnare ERD, improvvisamente la mia mente fa una domanda. Come disegnare? Il cliente prende appuntamento e l'amministratore approva l'appuntamento. ora solo due tavoli e admin, cliente nella stessa tabella. Aiuto.

    
posta Giskin Leow 09.07.2012 - 06:20
fonte

2 risposte

2

Questo è quello che farei:

table user (
  id primary key,
  name,
  email,
  -- etc
);

table approver (
  id primary key foreign key user(id),
  appointed_date, 
  -- etc
);

table appointment (
  -- whatever PK
  created_by foreign key user(id), 
  approved_by foreign key approver(id),
  -- etc
);

Ora qualsiasi utente può creare un appuntamento, ma solo gli utenti anche presenti nella tabella approver possono approvarlo.

    
risposta data 09.07.2012 - 07:28
fonte
1

I want to draw ERD

Devi specificare chiaramente se un utente normale può essere un amministratore un giorno o meno. Tuttavia, non sappiamo dalla tua descrizione. Questo è un punto chiave.
Se un utente normale non sarà mai un amministratore, è meglio usare 2 tabelle diverse. Se si desidera utilizzare 1 tabella qui ci sono 2 soluzioni. Il primo utilizza il concetto di sottotipo che richiede almeno 1 colonna diversa tra le due tabelle o che un sottotipo è una tabella figlio.

I dati forniti non mostrano attributi diversi tra i due tipi di utenti, quindi non è possibile utilizzare la prima soluzione in base ai dati forniti.

La seconda soluzione è più generica. Se hai intenzione di avere il RegularUser e admin cambiano tipi / ruoli, quindi è necessario creare una relazione m-m tra RegularUser e UserType. (Nota: AppointmentID è PK per la tabella degli appuntamenti).

    
risposta data 09.07.2012 - 07:56
fonte

Leggi altre domande sui tag