做梦梦见兔子是什么意思| 脚底疼是什么原因引起的| 大唐集团什么级别| 霍启刚家族做什么生意| 贫血吃什么药补血最快| 吃辣椒有什么好处| 什么水果对心脏好| 吃什么败火| 目是什么单位| 4月出生是什么星座| 脂蛋白a是什么| 檄文是什么意思| 什么葡萄品种最好吃| 杨梅有什么功效与作用| 神经性皮炎是什么原因引起的| 孕妇胆固醇高对胎儿有什么影响| 特效是什么意思| 耳鸣是什么原因导致的| 排卵日和排卵期有什么区别| 颅骨早闭合有什么症状| 骨折移位有什么感觉| 怀疑心梗做什么检查| 荧光剂是什么东西| 维他命是什么意思| 女人代谢慢吃什么效果最快| 猪蹄炖什么好吃| 尿液阳性是什么意思| 钱是什么意思| 学子是什么意思| 程门立雪什么意思| 什么人不适合艾灸| 吃什么能降胆固醇| 荥在中医读什么| ctc是什么意思| 肺炎吃什么药最有效| 减肥吃什么零食| 复检是什么意思| 浅绿色是什么颜色| 妙不可言是什么意思| 腺肌瘤是什么病| 孕中期同房要注意什么| 滥竽充数的充是什么意思| 平均血小板体积偏高是什么原因| 怀孕吃什么水果| 伟五行属什么| 5月20日是什么日子| 11月16号是什么星座| 黄皮肤适合什么颜色的衣服| 胃动力不足吃什么中成药| 室上速是什么病| 九锡是什么意思| 为什么吃辣的就拉肚子| 冰箱什么牌子的好| 印鉴是什么意思| 什么是腹式呼吸| 手心出汗是什么原因| 127是什么意思| 明信片是什么| 一喝酒就脸红是什么原因| 为什么男人| 73年属什么| 牛油果是什么味道的| 二十二岁属什么| 直肠癌是什么原因引起的| 冰箱为什么老是结冰| 膝盖积液挂什么科| 年柱金舆是什么意思| 如如不动是什么意思| 抠鼻表情什么意思| 四月二十五是什么星座| 甲龙吃什么| 教育局局长是什么级别| 韩红是什么民族| 生长发育挂什么科| 独角仙吃什么食物| 朱迅和朱军是什么关系| 世上谁嫌男人丑的前一句是什么| 喝什么睡眠效果最好| 妇科彩超主要检查什么| instagram是什么软件| 弥漫性脂肪肝什么意思| 今年什么时候过年| 戳是什么意思| 多囊卵巢综合症有什么症状| 备孕要检查什么项目| 合成革是什么材质| 河南古代叫什么| 为什么三角形具有稳定性| 请佛像回家有什么讲究| 老是放屁是什么原因| 什么是规培生| 8.1是什么星座| 杭州有什么| 噻虫高氯氟治什么虫| 老年人脚浮肿是什么原因| 烤鱼什么鱼好吃| ins是什么| 16周检查什么项目| 11月30号什么星座| 为什么会阳痿| 面筋是什么| 头陀是什么意思| 为什么眼泪是咸的| 例假量多是什么原因| 苯丙酮尿症是什么| 骶髂关节在什么位置| 1961属什么生肖| 女人的逼长什么样| 晒太阳对身体有什么好处| 三叉神经痛挂什么科就诊| 石乐读什么| 望尘莫及的及是什么意思| 双向是什么意思| 女人烂桃花多说明什么| 处女座的幸运色是什么| 双生什么意思| 夏天防中暑备什么药| ppl是什么药| 甲状腺跟甲亢有什么区别| 腿无力是什么原因| 半边屁股疼是什么原因| 红楼梦为什么是四大名著之首| 黄芪补什么| 脂肪肝吃什么药| 梦见自己流血是什么预兆| 海棠花什么时候开花| 缩量是什么意思| 又什么又什么| 细菌性毛囊炎用什么药| 陶白白是什么星座| 什么惚惚| 53年属什么生肖| 饕餮是什么| 病人化疗期间吃什么好| 中性粒细胞百分比偏低什么意思| 通便吃什么最快排便| 什么呀| 耳鸣吃什么药好| 烧心是什么原因造成的| 生命之水是什么| 婚煞是什么意思| 肢体麻木是什么原因| 谨遵医嘱是什么意思| 什么是友谊| 918是什么星座| 基础代谢率是什么意思| 酒精过敏有什么症状| 子宫出血什么原因| 顺钟向转位是什么意思| 蜂王浆有什么好处| 喝酒拉肚子吃什么药| 梦到别人怀孕了是什么意思| 什么的世界| 直爽是什么意思| 过敏期间不能吃什么东西| 小孩子口臭是什么原因| 焦虑症吃什么| ost是什么| belle什么意思| 腹部左侧是什么器官| 用什么擦地最干净| 斗鱼吃什么食物| 下肢静脉血栓挂什么科| 醒酒是什么意思| 癫痫病是什么原因引起的| 宝宝拉黑色大便是什么原因| 苹果6和苹果6S有什么区别| 蛹是什么| 吃什么预防脑梗| agc什么意思| 尿路感染吃什么药最好| 举贤不避亲什么意思| 人参泡酒有什么功效| 杨梅用什么酒泡最好| 嗓子哑了吃什么药| 鲁米那又叫什么| 乙状结肠炎吃什么药| 蜥蜴什么动物| 枫叶是什么树| pbs是什么| 晚上看见刺猬预示什么| 胸闷憋气是什么原因| 恶露后期为什么是臭的| 308是什么意思| sobranie是什么烟| 摩拳擦掌是什么意思| 晚上3点是什么时辰| 什么是概念车| 皮下紫癜是什么引起的| 大红色配什么颜色好看| 一个人自言自语的说话是什么病| 小白兔是什么意思| 胃疼挂什么科| 10月出生的是什么星座| ur是什么品牌| 农历十月十八是什么星座| 画龙点睛是什么生肖| 哈喇味是什么味道| 春天可以干什么| 血糖高有什么反应| 乖戾是什么意思| 月经期间头疼是什么原因| 脾气暴躁易怒是什么病| 减肥期间吃什么水果好| 脾胃虚寒者有什么症状| 早泄是什么意思| 红茶属于什么茶| 花非花雾非雾什么意思| 京东pop是什么意思| 莫须有什么意思| 龙跟什么生肖配对最好| 什么叫物理| 吃什么可以增加黄体酮| 什么筷子不发霉又健康| 人体成分分析是检查什么| 七月种什么菜| 有因必有果什么意思| 紫色加红色是什么颜色| pumpkin是什么意思| 做了胃镜多久可以吃东西吃些什么| 鱿鱼炒什么好吃| 单独玉米粉能做什么| 颈部有肿块看什么科室| 例假来的是黑色的是什么原因| lo什么意思| 伤心的反义词是什么| 什么地大喊| 百毒不侵是什么意思| 拉拉裤和纸尿裤有什么区别| 女生胸痛什么原因| 辅助治疗是什么意思| 头皮结痂抠掉又结痂是什么病| 7月1日什么节| 浆细胞肿瘤是什么病| 白细胞满视野是什么意思| 亮剑是什么意思| 腹部痛是什么原因| 君子兰叶子发黄是什么原因| 孝庄是康熙的什么人| 牙齿发黄是什么原因导致的| 陈小春什么星座| 什么是童话| 什么是聚酯纤维面料| 竹笙是什么| 提防是什么意思| 苗侨伟为什么叫三哥| 半月板是什么部位| 女人左眼皮跳是什么预兆| 钻石是什么材质| 美国为什么不打朝鲜| 乔治阿玛尼和阿玛尼有什么区别| 红艳煞是什么意思| 什么树木| 5.22是什么星座| 揩油是什么| 今天什么时辰立秋| 颞下颌关节紊乱挂什么科| 化气行水是什么意思| 星期一左眼皮跳是什么预兆| 梅毒是什么样的| 湿热是什么症状| 什么是双一流| 心慌吃什么药能缓解| 什么平什么静| 百度Vai al contenuto

明天这些药都降价了!7000余种医院药价总体降两成

Da Wikipedia, l'enciclopedia libera.
(Reindirizzamento da Tabella (basi di dati))
In una base di dati relazionale i dati sono organizzati in relazioni, ovvero collezioni di tuple di valori correlati che rappresentano un'entità del mondo reale. Relazioni diverse possono essere associate individuando valori "chiave" in comune. Le relazioni possono essere visualizzate sotto forma di tabelle.
百度 安徽代表团认为,安徽已拥有包括17个国家级经开区和高新区、3个综合保税区在内的很多成熟的开放载体,具有建设自贸试验区的条件和基础。

In informatica il modello relazionale è un modello matematico che offre gli strumenti concettuali per strutturare una base di dati in termini di valori atomici e relazioni tra di essi.

Proposto da Edgar F. Codd nel 1970 per semplificare la scrittura di interrogazioni sui database e per favorire l'indipendenza dei dati, venne reso disponibile come modello logico in DBMS reali nel 1981 e ad oggi è uno dei modelli logici più utilizzati, implementato su moltissimi DBMS sia commerciali che open source. Si basa sulla teoria degli insiemi e sulla logica del primo ordine, strutturato intorno al concetto matematico di relazione e per il suo trattamento ci si avvale di strumenti quali il calcolo relazionale e l'algebra relazionale.[1]

Edgar F. Codd lavorava nella sede californiana di IBM come ricercatore sulla nascente tecnologia dei dischi rigidi quando osservò l'inefficienza dell'approccio CODASYL con la nuova modalità di memorizzazione dei dati, inefficienza principalmente dovuta all'assenza di una funzione di ricerca. Nel 1970 cominciò a produrre diversi documenti schematizzanti un nuovo approccio alla costruzione delle basi di dati, culminati nell'articolo "A Relational Model of Data for Large Shared Data Banks" (lett. "Un modello relazionale dei dati per banche dati condivise di grandi dimensioni" in italiano).[2]

In questo articolo descrisse un nuovo sistema per archiviare e modificare grandi quantità di dati. Invece di utilizzare sequenze di record collegati tra loro attraverso un qualche tipo di struttura ad albero, come nel modello CODASYL, ritenne di utilizzare collezioni di tuple di dimensione fissata, chiamate "relazioni".

Questo sistema sarebbe risultato molto inefficiente per l'archiviazione di dati sparsi, ovvero nel caso di tuple che presentano sistematicamente diversi campi vuoti; tale errore di impostazione fu corretto spostando i campi opzionali in collezioni separate, in modo da produrre insiemi più compatti, risparmiando spazio.

Ad esempio, un utilizzo comune delle banche dati è quello di registrare delle informazioni sugli utenti: il loro nome, informazioni di accesso, indirizzo e numeri di telefono. In una banca dati navigazionale tutti questi dati sarebbero stati memorizzati in un unico "record", e gli elementi non presenti (ad esempio un utente di cui non sia noto l'indirizzo) sarebbero stati semplicemente omessi. Al contrario, in una banca dati relazionale, le informazioni vengono divise, ad esempio, nelle tabelle "utente", "indirizzi", "numeri di telefono" e solo se i dati sono presenti viene creata, nella rispettiva tabella, una tupla.

Uno degli aspetti interessanti introdotti nelle banche dati relazionali sta nel collegamento delle tuple attraverso i valori: nel modello relazionale per ogni relazione viene definita una "chiave", ovvero un campo (o insieme di campi) che assume un valore univoco per ogni tupla, fungendo da identificatore. La chiave può essere ricavata direttamente dai dati memorizzati (ad esempio, in un database di cittadini italiani si potrebbe utilizzare il codice fiscale di ognuno), o aggiunta in maniera artificiale (ad esempio aggiungendo un campo ID numerico, generato sequenzialmente per ogni tupla).

Questa operazione di "riunificazione" dei dati non è prevista nei linguaggi di programmazione tradizionali: mentre l'approccio navigazionale richiede semplicemente di "ciclare" per raccogliere i diversi "record", l'approccio relazionale richiede al programma di "ciclare" per raccogliere le informazioni riguardanti ogni record.[non chiaro] Codd, propose, come soluzione, la creazione di un linguaggio dedicato a questo problema. Tale linguaggio, più tardi, si è sviluppato nella codifica che oggi è universalmente adottata e che è il mattone fondamentale delle basi di dati: SQL.

Utilizzando una branca della matematica chiamata "calcolo delle tuple", dimostrò che questo sistema era in grado di compiere tutte le normali operazioni di amministrazione delle banche dati e che inoltre consentiva di disporre di uno strumento semplice per trovare e visualizzare gruppi di dati tramite un'unica operazione.

Implementazione

[modifica | modifica wikitesto]

IBM cominciò a implementare questa teoria in alcuni prototipi all'inizio degli anni settanta, come nel "System R". La prima versione fu realizzata nel 1974/75 con uno strumento "monotabella"; negli anni successivi furono studiati i primi sistemi che potessero supportare la suddivisione dei dati in tabelle separate. Versioni "multiutente" furono realizzate nel 1978 e nel 1979; negli stessi anni fu standardizzato il linguaggio SQL. La superiorità di questo sistema rispetto a CODASYL fu quindi evidente e IBM passò a sviluppare una versione commerciale di System R, che prese il nome di "SQL/DS" prima e "DB2" infine.[3]

Il lavoro di Codd venne proseguito presso l'Università di Berkeley da Eugene Wong e Michael Stonebraker. Il loro progetto, chiamato INGRES e finanziato con fondi destinati alla creazione di un database geografico, vide la luce nel 1973 e produsse i primi risultati nel 1974 anche grazie all'opera di numerosi studenti che si prestarono come programmatori (quasi 30 persone lavorarono al progetto). INGRES era assai simile a System R e prevedeva un linguaggio alternativo a SQL, chiamato QUEL.[4]

Molte delle persone coinvolte nel progetto si convinsero della fattibilità commerciale dello stesso e fondarono imprese per entrare nel mercato con questo prodotto. Sybase, Informix, NonStop SQL e alla fine Ingres stessa nacquero quali spin-off per la diffusione di INGRES all'inizio degli anni ottanta. Perfino Microsoft SQL Server è, per certi versi, una derivazione di Sybase e quindi di INGRES. Solamente la Oracle di Larry Ellison partì utilizzando un approccio diverso, basato sul System R di IBM, e alla fine prevalse sulle altre compagnie con il suo prodotto, lanciato nel 1978.[5]

In Svezia il lavoro di Codd venne sviluppato all'Università di Uppsala che sviluppò un diverso prodotto, "Mimer SQL", commercializzato nel 1984. Una particolarità di questa soluzione sta nell'introduzione del concetto di transazione, successivamente importata in quasi tutti i DBMS.[6]

Esempio di tabella di un RDBMS ovvero secondo il modello relazionale (Docenti e loro corsi). Visibile in alto in grigio l'intestazione o testata della tabella con i nomi dei vari campi o attributi e i valori assunti da questi nelle rispettive righe, record o tuple nel corpo sottostante (è presente un record duplicato).

L'assunto fondamentale del modello relazionale è che tutti i dati sono rappresentati come relazioni e manipolati con gli operatori dell'algebra relazionale o del calcolo relazionale, da cui appunto il nome.

Il modello relazionale consente al progettista di database di creare una rappresentazione consistente e logica dell'informazione. La consistenza è ottenuta inserendo nel progetto del database appropriati vincoli. La teoria comprende anche un processo di normalizzazione in base al quale viene selezionato tra le diverse alternative lo schema maggiormente "desiderabile".

La struttura base del modello relazionale è composta da:

  • uno o più attributi o campi dato;
  • un tipo di dato ed un dominio su quel tipo, definito come l'insieme dei valori che può assumere un determinato attributo o campo dato;
  • un valore per ciascun attributo all'interno del dominio o tipo di dato consentito;
  • una tupla, record o riga cioè l'insieme non ordinato di valori assunti dagli attributi.

La testata della relazione è l'insieme di attributi o campi dato, mentre il corpo è l'insieme di n tuple o record di dati o valori. La testata di una relazione è anche la testata di ciascuna delle sue tuple. La tabella è invece la rappresentazione grafica normalmente accettata per rappresentare la relazione tra attributi e valori.

Il principio base del modello relazionale è dunque che tutte le informazioni siano rappresentate da valori inseriti in relazioni (tabelle); dunque, un database relazionale è un insieme di relazioni contenenti valori e il risultato di qualunque interrogazione (o manipolazione) dei dati può essere rappresentato anch'esso da relazioni (tabelle).

Il modello relazionale risponde al requisito dell'indipendenza dei dati e prevede una distinzione tra il livello fisico e il livello logico: questa capacità di astrazione ha fatto la sua fortuna nel mondo della gestione dati.

Applicazione ai database

[modifica | modifica wikitesto]
Esempio di relazione tra più tabelle. Due tabelle secondarie, attraverso le rispettive foreign key, puntano ovvero sono referenziate ad una tabella primaria che contiene un campo comune tra le tre detta chiave primaria (nell'esempio il campo Activity Code)

"Tabella" è il termine normalmente usato in sostituzione del termine teorico "relazione" per indicare l'insieme delle righe e delle colonne della matrice di dati. La struttura di una tabella è specificata da una lista di colonne, ciascuna delle quali ha un nome univoco (l'attributo o campo dato), un tipo di dato e un dominio, cioè un insieme di valori accettati (valori univoci non ripetuti se è una chiave primaria, oppure valori ripetibili; fra questi il valore NULL se l'attributo non è obbligatorio).

"Attributo" o campo dato è il termine usato per indicare l'intestazione iniziale di una colonna; ad esso si associa un certo tipo di dato con il suo dominio di possibili valori. Il tipo di dato usato nei database relazionali può essere un insieme di numeri interi, un insieme di caratteri alfanumerici, l'insieme delle date, i valori booleani vero e falso ecc... I corrispondenti "nomi di tipo", ad esempio, saranno dunque le stringhe "int", "char", "date", "boolean", etc. Da sottolineare che, da una parte, la teoria relazionale non definisce quali tipi vadano supportati, e dall'altra molti sistemi garantiscono la possibilità di definire tipi di dati definiti dall'utente cioè personalizzati, in aggiunta a quelli "standard" forniti dal sistema.

Valore di attributo è il dato o valore di una cella identificata da una specifica coppia riga - colonna, come ad esempio "Mario Rossi" o "2006", mentre una tupla è praticamente la stessa cosa di una riga o record di dati o valori.

Una relazione è dunque la definizione di una tabella, cioè un insieme di colonne e righe, cioè attributi o campi dato insieme ai rispettivi dati o valori che vi compaiono. La definizione della tabella è la testata iniziale e i dati che vi appaiono sono il corpo cioè un insieme di righe.

In tale ambito, il termine relazione a volte si riferisce anche alle relazioni o vincoli interrelazionali che intercorrono tra una tabella primaria (master) ed altre tabelle secondarie (slave) attraverso l'associazione tra una chiave primaria della tabella principale e le foreign key delle altre tabelle.

Le operazioni tipiche basilari che saranno possibili su una tabella precedentemente definita e creata nella sua struttura tramite il Data Definition Language (DDL) sono quelle cosiddette di CRUD ovvero C creazione (create) o inserimento dei record (insert), R lettura (read), U aggiornamento (update), D cancellazione (delete), attraverso il Data Query Language e il Data Manipulation Language (DML) del linguaggio standard SQL. Altre operazioni tipiche sono la definizione delle chiavi (primarie o esterne) sulle tabelle definite ed altre ancora sono definite nel linguaggio Data Control Language e nello stesso Data Definition Language.

Vincoli di integrità referenziale

[modifica | modifica wikitesto]
Lo stesso argomento in dettaglio: Vincolo di integrità.

I vincoli di integrità rappresentano una classe di proprietà che dovrebbero essere sempre soddisfatte dalle istanze della base di dati, pena la perdita dei dati conservati o la comparsa di errori di elaborazione. La verifica e la preservazione di questi vincoli rientra nei compiti dei sistemi di gestione delle basi di dati.

Dal punto di vista formale un vincolo è un predicato sulla base di dati o di un suo elemento. Valutando il predicato è possibile rilevare se la base di dati soddisfa o meno un dato vincolo. In generale a uno schema di base di dati si associa un insieme di vincoli e si considerano corrette solo le istanze che soddisfano tutti i vincoli specificati.

Esistono due grandi tipologie di vincoli: quelli intra-relazionali che interessano una sola relazione e quelli inter-relazionali o extra-relazionali che definiscono legami tra relazioni differenti.

Altri modelli

[modifica | modifica wikitesto]
Lo stesso argomento in dettaglio: Base di dati § Secondo il modello dei dati.

Prima dell'avvento del modello relazionale, le basi di dati venivano progettate seguendo principalmente due modelli: quello gerarchico e quello reticolare. Sebbene oggi la maggioranza dei DBMS supporti il modello relazionale, in alcuni centri elaborazione dati sono ancora utilizzati database gerarchici o reticolari, specialmente in casi in cui la migrazione avrebbe costi proibitivi.

Secondo alcuni autori[Quali?] il modello relazionale potrebbe in futuro cedere il passo a un modello orientato agli oggetti, ma da una parte i DBMS ad oggetti stentano ad affermarsi, dall'altra i migliori DBMS relazionali stanno rilasciando funzionalità object-oriented, come la possibilità di definire tipi di dato "utente"[non chiaro].

  1. ^ Atzeni 2018, p. 15.
  2. ^ Codd 1970.
  3. ^ Breve storia dei database relazionali, su ibm.com. URL consultato il 18 marzo 2024.
  4. ^ (EN) Michael Stonebraker e Lawrence A. Rowe, The design of POSTGRES (PDF), in SIGMOD '86: Proceedings of the 1986 ACM SIGMOD international conference on Management of data, Washington, DC, Association for Computing Machinery, maggio 1986, p. 4, DOI:10.1145/16894, ISBN 0897911911.
  5. ^ (EN) Brief History of Oracle Database, su docs.oracle.com. URL consultato il 18 marzo 2024.
  6. ^ (EN) Database Technology | We made it possible, su wemadeitpossible.com, Università di Uppsala, gennaio 2011. URL consultato il 18 marzo 2024 (archiviato dall'url originale il 25 aprile 2018).

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica
属牛幸运色是什么颜色 属鸡的幸运色是什么颜色 结售汇是什么意思 尾牙宴是什么意思 心什么神什么
个体户是什么职业 红花泡脚有什么好处 孕初期需要注意些什么 脚后跟干裂起硬皮用什么药 婴儿头发长得慢是什么原因
孩子过敏性咳嗽吃什么药好 94年什么命 属猴女和什么属相最配 6度醋与9度有什么区别 练深蹲有什么好处
转氨酶高吃什么食物降得快 叶公好龙是什么生肖 胎位rsa是什么意思 火丹是什么原因造成的 macd什么意思
耳朵里发炎用什么药好hcv9jop3ns6r.cn 非分之想什么意思hcv9jop4ns9r.cn 令瓦念什么beikeqingting.com 什么是超声波hcv9jop5ns8r.cn 鼠女和什么生肖最配hcv8jop6ns1r.cn
油性记号笔用什么能擦掉hcv7jop5ns5r.cn 双鱼座女和什么星座最配hcv7jop6ns5r.cn 喉咙有异物感是什么原因hcv7jop9ns5r.cn 什么是邪淫hcv9jop4ns2r.cn 海石花是什么hcv8jop1ns4r.cn
宝宝咳嗽流鼻涕吃什么药hcv8jop9ns9r.cn 嘴唇有黑斑是什么病hcv8jop0ns8r.cn 何辅堂是什么电视剧hcv8jop7ns2r.cn 吃什么流产最快hcv9jop1ns6r.cn 青鹏软膏主要治疗什么hcv9jop2ns0r.cn
涩是什么意思hcv9jop4ns6r.cn 小猫吃什么东西hcv9jop3ns8r.cn 兔唇是什么原因造成的luyiluode.com 什么天长地久hcv8jop8ns6r.cn 梦游的人为什么不能叫醒hcv9jop1ns5r.cn
百度