数据库设计案例 mysql学习
生活随笔
收集整理的這篇文章主要介紹了
数据库设计案例 mysql学习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
需求:對專輯,曲目,評論,用戶四個表進行關聯,尋找每個表需要的數據信息,找出表與表之間的關系。
音樂專輯表名:Music
| title | varchar(32) | 專輯名 |
| alias | varchar(32) | 專輯別名 |
| image | varchar(64) | 封面圖片 |
| style | varchar(8) | 流派(如經典、流行、民謠、電子等) |
| type | varchar(4) | 類型(專輯、單曲等) |
| medium | varchar(4) | 介質(CD、黑膠、數字等) |
| publish_time | date | 發行時間 |
| publisher | varchar(16) | 出版者 |
| number | tinyint | 唱片數 |
| barcode | bigint | 條形碼 |
| summary | varchar(1024) | 簡介 |
| artist | varchar(16) | 藝術家 |
| id | int | 編號(唯一) |
曲目表名: Song
| name | varchar(32) | 歌曲名 |
| serial_number | tinyint | 歌曲序號 |
| id | int | 編號(唯一) |
評論表名:Review
| content | varchar(256) | 評論內容 |
| rating | tinyint | 評分(1~5) |
| review_time | datetime | 評論時間 |
用戶表名:User
| username | varchar(16) | 用戶名(唯一) |
| image | varchar(64) | 用戶頭像圖片地址 |
| signature | varchar(64) | 個人簽名,例如(本來無一物,何處惹塵埃!) |
| nickname | varchar(16) | 用戶昵稱 |
| id | int | 用戶編號(主鍵) |
-- 專輯與用戶之間為多對多的關系(一張專輯可多用戶購買,一個用戶也可以購買多張專輯)
-- 需要新建一張中間表對二者進行關聯
-- 專輯與曲目之間為一對多的關系(一張專輯可以有許多曲目,一首曲子只能在一張專輯中)
-- 一對多外鍵設置在多的一方,當前應設置在曲目表,評論表,評論表中
-- 專輯與評論之間為一對多的關系(一張專輯可以有許多評論,對應評論只能在一張專輯中)
-- 用戶與評論之間為一對多的關系(一個用戶可以有許多評論,對應評論只能屬于一個用戶)
?
?
?當您刪除數據時會發現這樣一個提示
?這邊提示您的數據被外鍵約束了,不可以進行刪除。
源代碼:
-- 案例 CREATE TABLE Music (title VARCHAR ( 32 ),-- 專輯名alias VARCHAR ( 32 ),-- 專輯別名image VARCHAR ( 64 ),-- 封面圖片style VARCHAR ( 8 ),-- 流派(經典,民謠等)type VARCHAR ( 4 ),-- 類型(單曲,專輯等)media VARCHAR ( 4 ),-- 介質(CD,黑膠)publish_time date,-- 發行時間publisher VARCHAR ( 16 ),-- 出版者number TINYINT,-- 唱片數barcode BIGINT,-- 條形碼summary VARCHAR ( 1024 ),-- 簡介artist VARCHAR ( 16 ),-- 藝術家id INT PRIMARY KEY -- 編號(主鍵)); CREATE TABLE Song ( NAME VARCHAR ( 32 ), -- 歌曲名serial_number TINYINT, -- 歌曲序號id INT PRIMARY KEY, -- 編號(主鍵)Music_id INT -- 外鍵編號 ); CREATE TABLE Review ( content VARCHAR ( 256 ), -- 評論內容rating TINYINT, -- 評分(1-5)review_time datetime, -- 評論時間Music_id INT, -- 外鍵編號User_id INT -- 外鍵編號 ); CREATE TABLE USER (username VARCHAR ( 16 ) UNIQUE,-- 用戶名(唯一)image VARCHAR ( 64 ),-- 用戶頭像圖片地址signature VARCHAR ( 64 ),-- 個人簽名,例如(本來無一物,何處惹塵埃!)nickname VARCHAR ( 64 ),-- 用戶昵稱id INT PRIMARY KEY -- 用戶編號(主鍵));-- 專輯與用戶之間為多對多的關系(一張專輯可多用戶購買,一個用戶也可以購買多張專輯) -- 需要新建一張中間表對二者進行關聯 CREATE TABLE Music_User ( id INT PRIMARY KEY auto_increment, -- 編號(主鍵),自增長Music_id INT, -- 對應記錄專輯編號User_id INT -- 對應記錄用戶編號 );-- 添加外鍵約束 ALTER TABLE Music_User ADD CONSTRAINT fk_Music_id1 FOREIGN KEY ( Music_id ) REFERENCES Music ( id ); ALTER TABLE Music_User ADD CONSTRAINT fk_User_id1 FOREIGN KEY ( User_id ) REFERENCES USER ( id );-- 專輯與曲目之間為一對多的關系(一張專輯可以有許多曲目,一首曲子只能在一張專輯中) -- 一對多外鍵設置在多的一方,當前應設置在曲目表,評論表,評論表中 ALTER TABLE Song ADD CONSTRAINT fk_Music_Song FOREIGN KEY ( Music_id ) REFERENCES Music ( id );-- 專輯與評論之間為一對多的關系(一張專輯可以有許多評論,對應評論只能在一張專輯中) -- 用戶與評論之間為一對多的關系(一個用戶可以有許多評論,對應評論只能屬于一個用戶) ALTER TABLE Review ADD CONSTRAINT fk_Music_id2 FOREIGN KEY ( Music_id ) REFERENCES Music ( id ); ALTER TABLE Review ADD CONSTRAINT fk_User_id2 FOREIGN KEY ( User_id ) REFERENCES USER ( id ); SELECT* FROMMusic;總結
以上是生活随笔為你收集整理的数据库设计案例 mysql学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OSChina 周五乱弹 —— 程序猿真
- 下一篇: MySQL笔记-mysql用户管理