SQL--數據庫的設計(多表之間的關系)


SQL--數據庫的設計(多表之間的關系)

博客說明

文章所涉及的資料來自互聯網整理和個人總結,意在於個人學習和經驗匯總,如有什么地方侵權,請聯系本人刪除,謝謝!

分類

  1. 一對一(了解)

    • 如:人和身份證
    • 分析:一個人只有一個身份證,一個身份證只能對應一個人
  2. 一對多(多對一)

    • 如:部門和員工
    • 分析:一個部門有多個員工,一個員工只能對應一個部門
  3. 多對多:

    • 如:學生和課程
    • 分析:一個學生可以選擇很多門課程,一個課程也可以被很多學生選擇

實現關系

  1. 一對多(多對一):
    • 如:部門和員工
    • 實現方式:在多的一方建立外鍵,指向一的一方的主鍵。
  2. 多對多:
    • 如:學生和課程
    • 實現方式:多對多關系實現需要借助第三張中間表。中間表至少包含兩個字段,這兩個字段作為第三張表的外鍵,分別指向兩張表的主鍵
  3. 一對一(了解):
    • 如:人和身份證
    • 實現方式:一對一關系實現,可以在任意一方添加唯一外鍵指向另一方的主鍵。

案例

    -- 創建旅游線路分類表 tab_category
		-- cid 旅游線路分類主鍵,自動增長
		-- cname 旅游線路分類名稱非空,唯一,字符串 100
		CREATE TABLE tab_category (
			cid INT PRIMARY KEY AUTO_INCREMENT,
			cname VARCHAR(100) NOT NULL UNIQUE
		);
		
		-- 創建旅游線路表 tab_route
		/*
		rid 旅游線路主鍵,自動增長
		rname 旅游線路名稱非空,唯一,字符串 100
		price 價格
		rdate 上架時間,日期類型
		cid 外鍵,所屬分類
		*/
		CREATE TABLE tab_route(
			rid INT PRIMARY KEY AUTO_INCREMENT,
			rname VARCHAR(100) NOT NULL UNIQUE,
			price DOUBLE,
			rdate DATE,
			cid INT,
			FOREIGN KEY (cid) REFERENCES tab_category(cid)
		);
		
		/*創建用戶表 tab_user
		uid 用戶主鍵,自增長
		username 用戶名長度 100,唯一,非空
		password 密碼長度 30,非空
		name 真實姓名長度 100
		birthday 生日
		sex 性別,定長字符串 1
		telephone 手機號,字符串 11
		email 郵箱,字符串長度 100
		*/
		CREATE TABLE tab_user (
			uid INT PRIMARY KEY AUTO_INCREMENT,
			username VARCHAR(100) UNIQUE NOT NULL,
			PASSWORD VARCHAR(30) NOT NULL,
			NAME VARCHAR(100),
			birthday DATE,
			sex CHAR(1) DEFAULT '男',
			telephone VARCHAR(11),
			email VARCHAR(100)
		);
		
		/*
		創建收藏表 tab_favorite
		rid 旅游線路 id,外鍵
		date 收藏時間
		uid 用戶 id,外鍵
		rid 和 uid 不能重復,設置復合主鍵,同一個用戶不能收藏同一個線路兩次
		*/
		CREATE TABLE tab_favorite (
			rid INT, -- 線路id
			DATE DATETIME,
			uid INT, -- 用戶id
			-- 創建復合主鍵
			PRIMARY KEY(rid,uid), -- 聯合主鍵
			FOREIGN KEY (rid) REFERENCES tab_route(rid),
			FOREIGN KEY(uid) REFERENCES tab_user(uid)
		);

感謝

黑馬程序員

以及勤勞的自己
關注公眾號: 歸子莫,獲取更多的資料,還有更長的學習計划


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM