Sto costruendo un'applicazione che consente a diversi utenti di memorizzare le informazioni sull'abbonato
- Per memorizzare le informazioni sull'abbonato, l'utente prima crea un elenco Per ogni elenco, c'è un ListID.
Subscriber
può avere un attributo diverso: email phone fax ....
Per ogni elenco, le loro impostazioni sono diverse, quindi viene introdotto un require_attribute table
.
È un ponte tra abbonato ed elenco
Quel negozio Listid, subid, attribute, datatype
Ciò significa che il sistema ha un sacco di elenchi, ogni utente ha il proprio elenco e l'elenco ha un attributo diverso, alcuni elenchi hanno e-mail, telefono, alcuni possono avere telefono, indirizzo, nome e-mail ... E il il tipo di dati è diverso, alcuni possono usare "nome" come intero, alcuni possono usare "nome" come varchar
-
attributo significa email phone, deve essere definito per
which list have which subscriber attribute
-
tipo di dati per ogni attributo, qual è il suo tipo di dati
Table :subscriber : Field :subid , name,email Table :Require Attribute: Field : Listid ,subid , attribute, datatype
L'attributo qui è {nome, email}
Quindi un dato semplice è
Subscriber: 1 , MYname, Myemail
Require Attribute :
Listid , 1 , 'email', 'intger'
Listid , 1 , 'name', 'varchar'
Ho scoperto che questo tipo di storage è troppo complesso da gestire, dal momento che l'utente è condiviso da tutti, quindi se una persona vuole modificare il tipo di nome, avrà anche effetto sui dati dell'altro utente.
Semplice situazione di errore:
Subscriber:
list1, Subscriber 1 , name1, email1
list2, Subscriber 2 , name2 , email2
Require Attribute :
List1 , Subscriber 1 , 'email', 'varchar',
List1 , Subscriber 1 , 'name', 'varchar',
Listid , Subscriber 2 , 'email', 'varchar',
Listid , Subscriber 2, 'name', 'integer',
se l'utente B cambia il tipo di dati del nome nell'attributo require da varchar a integer, causa un problema. poiché l'elenco 1 è di proprietà dell'utente A, desidera che il tipo di dati sia varchar, ma l'utente 2 vince l'elenco 2, desidera che il tipo di dati sia intero
Quindi, come posso ridisegnare la struttura?