Ho letto la definizione di 1NF che è “Se ogni attributo della relazione è atomico”. Per favore dimmi cosè Atomic.
Commenti
- Di rilevanza .
Risposta
1NF richiede che ogni posizione di attributo in ogni tupla in ogni relazione contenga un singolo valore del tipo appropriato . I tipi possono essere arbitrariamente complessi. In effetti, i tipi possono essere relazioni. (Il libro di CJ Date Database in profondità: teoria relazionale per professionisti tratta questo problema in un modo che è abbastanza facile da capire.)
“Atomico” non ha mai veramente significato “indivisibile”, motivo per cui quel termine sta finalmente cadendo in disgrazia. In parole povere, “atomico” significa che se un valore ha parti componenti, il dbms ignora lesistenza di quelle parti o fornisce funzioni per manipolarle. Ad esempio, un valore di timestamp ha queste parti.
- Anno
- Mese
- Giorno
- Ore
- Minuti
- Secondi
- Millisecondi
Questo tipo di valore è ovviamente divisibile e tutti i sistemi di gestione di database forniscono funzioni per manipolare quelle parti. Forniscono anche un modo per selezionare un timestamp come valore singolo. (Che, ovviamente, lo è.)
Risposta
“Atomic” si riferisce alla nozione originale di Codd del 1969 che ogni attributo in ogni tupla allinterno di una relazione dovrebbe consistere in un singolo valore e non consentire strutture multivalore del tipo supportato in database come il modello CODASYL.
Nei moderni DBMS SQL latomicità non è davvero un problema. Le tabelle SQL non consentono colonne multivalore e i valori sono sempre “atomici”.
Commenti
- Tecnicamente vero, ma le tabelle SQL consentono stringhe grandi come valori , che in pratica è una scappatoia. Un campo stringa che contiene diversi numeri interi decimali separati da virgole, date ASCII, ecc., Sembrerebbe sicuramente violare lintento di atomicità, sia che segua la lettera o meno ….
Risposta
Atomico significa dati che non possono essere ulteriormente suddivisi.
Regola di atomicità:
- regola 1: una colonna con dati atomici non può avere più valori dello stesso tipo di dati nella stessa colonna.
- regola2: una tabella con dati atomici non può avere più colonne con lo stesso tipo di dati.
Come la colonna fullname “non posso dire che potrebbe essere atomica perché può essere ulteriormente suddivisa in lastname, firstname. Una colonna con interesse potrebbe anche essere divisa ulteriormente, quindi una colonna che può” essere diviso è noto come atomico.
Risposta
Significa che la chiave non può essere scomposta. Supponiamo che tu abbia una tabella con tre colonne, nome, cognome e numero di telefono. Dichiari una chiave primaria composta su (nome, cognome). Quella chiave primaria non è atomica perché in realtà è composta da due colonne. Ora supponiamo di modificare la tabella in due colonne, full_name e telephone_number, con una chiave primaria su full_name. La chiave è ora atomica? No, perché nella tua applicazione potresti dividerlo in nome e cognome ancora, nello spazio. Ora facciamo “s la nostra tabella id, full_name e telephone_number, chiave primaria su id (che è un numero intero). Quello è atomico, perché il numero intero non può essere decomposto in modo significativo.
Commenti
- il tuo esempio tuttavia inizia con la dichiarazione secondo cui latomicità ” significa che la chiave non può essere scomposta “. Questo ‘ non è ciò che significa. Significa che attributi sono costituiti da un singolo valore. Non cè niente ” non atomico ” su una chiave composta da più attributi.
Risposta
Codd originariamente sembra aver significato che nessun valore è di per sé un insieme. Questo è un utile punto di partenza ma “atomico” non ha alcun significato ontologico quando si tratta di database (qualcosa CJ Date è giusto Codd ha cercato di formalizzare la definizione come qualcosa che non poteva essere ulteriormente scomposto al di fuori delle specifiche operazioni di database ial (es. un timestamp è atomico perché lestrazione dellanno è unoperazione speciale del database). In altre parole, se il database può suddividere i sottovalori, va bene. Ma non dovresti avere insiemi (elenchi non ordinati) o oggetti che richiedono la logica dellapplicazione per essere scomposti.
Nel corso del tempo e lottando con questo problema in ambienti operativi, proporrei una definizione intermedia di atomicità, una più rigorosa di Codd e senza la tana del coniglio di cui parla Date:
Un valore è atomico ai fini della prima forma normale se e solo se:
- Il valore non è un insieme (sì, So che la data non è daccordo) e
- Non ci sono riferimenti di chiavi esterne a nessuna sottoparte del campo.
In particolare, la rappresentazione di un valore non può determinarne latomicità. Rappresentare un indirizzo IP come “10.0.0.1” rispetto a ARRAY [10,0,0,1] rispetto a 167772161 non ha importanza per lanalisi 1NF poiché tutti e tre si riferiscono allo stesso valore atomico.
In particolare, comune (e talvolta utile!) Le violazioni di 1NF riguardanti latomicità includono:
- Memorizzazione di un array di tag in un post o commento del blog.
- Memorizzazione di tabelle allinterno di tabelle, dove ha un requisito di integrità referenziale rispetto a unaltra relazione altrove.
Questi problemi generano, più o meno, le stesse anomalie dei dati.
Risposta
Considera un luogo sulla Terra. Posso trovarlo con le coppie (longitudine, latitudine) o con il codice HTM (Hierarchical Triangular Mesh). Poiché entrambi misurano gli stessi dati. Questo è un fatto fisico, che possiamo misurare con un telefono cellulare; traduce un numero di griglia in [longitudine, latitudine] per te), devono essere entrambi atomici o composti nel tuo modello.
Non confondere la scala utilizzata per la misurazione e la notazione utilizzata per visualizzare i dati con natura dei dati.
Commenti
- Ho modificato questo post per un paio di errori di battitura. Non ‘ credo che questo utente sia il vero Joe Celko, ma ho cercato furto didentità su meta.stackexchange.com e ho trovato questo thread . Controlla le risposte dei signori Atwood e Spolsky, i fondatori di stackexchange. Sembra essere consentito.
Risposta
La chiave atomica è quel tipo di chiave primaria che non può essere scomposta. significa che questa chiave non è ulteriormente suddivisa, come Student_ID, Employee_ID.