7-mavzu. Ma’lumotlar bazasi bilan ishlashning kengaytirilgan imkoniyatlari. Reja


Download 288 Kb.
bet3/5
Sana28.12.2022
Hajmi288 Kb.
#1020296
1   2   3   4   5
Bog'liq
7-мавзу (1)

Ko’pga-ko’p bog’lanish
Ba'zi hollarda, munosabatlarning ikkala tomoniga bir nechta bog’lanishlar talab qilinadi. Masalan, har bir buyurtma ko'p tovarlarni o'z ichiga olishi mumkin. Va har bir tovar ko'plab buyurtmalarda mavjud bo'lishi mumkin.
Bunday ulanish uchun qo'shimcha jadval yaratishimiz kerak:

"Items_Orders" jadvalining maqsadi faqat bitta - tovarlar va buyurtmalar o'rtasida ko'pga ko'p bog'liqlik yaratish.
Ushbu turdagi bog’lanishlar quyidagicha ifodalanishi mumkin:

Agar siz diagramma items_orders yozuvlarini qo'shsangiz, u quyidagicha ko'rinadi:

O'z-o’ziga bog’lanish
Ushbu turdagi jadval o'zi bilan bog’lanishlarga ega bo'lishi kerak bo'lgan hollarda qo'llaniladi. Aytaylik, sizga murojaat qilish dasturi mavjud. Xaridorlar sizning onlayn-do'kon saytingizda boshqa xaridorlarga bog'lanishlari mumkin. Jadval shunday ko'rinishi mumkin:

Bu "ko'pga-bir" bog’lanishlariga o'xshaydi, chunki bitta mijoz bir nechta mijozlar bilan bog'lanishi mumkin. Buni daraxt tuzilishi deb hisoblash mumkin:



Tashqi kalitlar
Ushbu bilimlarni SQL yordamida amalda qo'llashni ko’rib o’tamiz. Ushbu qismda biz tashqi kalitlar nima ekanligini tushunishimiz kerak.
Yuqorida muhokama qilingan munosabatlarda biz har doim "**** _ id" shaklidagi maydonga ega edik, unga boshqa jadvaldagi ustun murojaat qilgan edi. Bizning misolimizda, Orders jadvalidagi customer_id ustuni tashqi kalit hisoblanadi:

MySQL kabi ma'lumotlar bazalarida tashqi kalitlarini yaratishning ikkita usuli mavjud:


Tashqi kalitni aniq o'rnating
Mijozlar kiritilgan oddiy jadval tuzamiz:
CREATE TABLE customers (
customer_id INT AUTO_INCREMENT PRIMARY KEY,
customer_name VARCHAR(100) );

Endi ikkinchi darajali kalitni o'z ichiga olgan buyurtmalar jadvalini tuzamiz:


CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT,
amount DOUBLE,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id) );

Ikkala ustun ham (customers.customer_id va orders.customer_id) bir xil turda bo'lishi kerak. Agar birinchisi INT turiga ega bo'lsa, ikkinchisi, masalan, BIGINT turiga kirmasligi kerak.



Download 288 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling