【個人筆記】《知了堂》三種關係:一對一,一對多,多對多。

来源:http://www.cnblogs.com/1542986913Yu/archive/2017/09/18/7544640.html
-Advertisement-
Play Games

一對一:比如一個學生對應一個身份證號、學生檔案; 一對多:一個班可以有很多學生,但是一個學生只能在一個班; 多對多:一個班可以有很多學生,學生也可以有很多課程; 一對多關係處理: 我們以學生和班級之間的關係來說明一對多的關係處理方法。假設現有基本表班級表(班級號,備註信息,……)。學生表(學號,姓名 ...


 

一對一:比如一個學生對應一個身份證號、學生檔案;

一對多:一個班可以有很多學生,但是一個學生只能在一個班;

多對多:一個班可以有很多學生,學生也可以有很多課程;

 

一對多關係處理:

我們以學生和班級之間的關係來說明一對多的關係處理方法。
假設現有基本表班級表(班級號,備註信息,……)。學生表(學號,姓名),

                       

方法一:
在學生表中新增欄位(班級號),該欄位作為學生表的外鍵與班級表中的班級號關聯。每一個學生實體在班級號欄位的值,表示該學生屬於的班級。

方法二:
新增一個關係表,用來表示學生與班級的屬於關係,該關係表包含欄位(學生號,班級號)。通過學生號與班級號的對應關係表示學生屬於的班級。

代碼示例:

-- 創建班級表
CREATE TABLE t_class(
c_id INT PRIMARY KEY AUTO_INCREMENT, --班級id
c_name VARCHAR(20) NOT NULL UNIQUE --班級名稱
)


-- 刪除學生表
DROP TABLE t_student;


-- 創建學生表
CREATE TABLE t_student(
s_id INT PRIMARY KEY AUTO_INCREMENT,  --主鍵id
s_name VARCHAR(15) UNIQUE,   --姓名
s_sex VARCHAR(5) DEFAULT '男',  --性別
s_age INT, --年齡
s_class_id INT, --班級id

使用外鍵關聯班級表的主鍵,附:表的外鍵必須是另一張表的主鍵
CONSTRAINT FOREIGN KEY(s_class_id) REFERENCES t_class(c_id)
)


-- 添加數據
INSERT INTO t_student(s_name,s_sex,s_age)
VALUES ('劉基','男','20')
INSERT INTO t_student(s_name,s_sex,s_age)
VALUES ('老劉','男','22')
INSERT INTO t_student(s_name,s_sex,s_age)
VALUES ('唐伯虎','男','20')

小結:一般情況下,一對多關係採用方法一來處理。

 

多對多關係處理:

 

在多對多關係中,我們要新增加一個關係表。在學生表和課程表的基礎上增加選課表來表示學生與課程之間的多對多關係。在選課表中,必須含有的屬性有學生號和課程號。(學生號,課程號)這個屬性集剛好也就是選課表的關鍵字。

代碼示例:

-- 創建學生表
CREATE TABLE student(
t_id INT PRIMARY KEY AUTO_INCREMENT, -- 學號
t_name VARCHAR(20), -- 學生名字
t_age INT, -- 年齡
t_sex CHAR(4), --性別
t_date DATE,
t_enrolDate DATETIME, 
t_class VARCHAR(20)
)
-- 創建班級表
CREATE TABLE class(
b_id INT PRIMARY KEY AUTO_INCREMENT,
b_name VARCHAR(20), --編輯編號
b_bname VARCHAR(50), --班級名稱
b_start DATE --開班時間 類型 date   
)
-- 成績表
CREATE TABLE grade(
c_id INT,
c_nameId INT,  --學生id 類型 int
c_courseId VARCHAR(40), --課程編號 類型 varchar
c_coursegrade INT, --課程成績  類型 int 
c_exam DATE --考試時間 類型 date
)
-- 課程表
CREATE TABLE course(
k_id VARCHAR(40),  --課程編號 類型 varchar
k_name VARCHAR(40)  --課程名稱 類型 varchar
)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 某天訪問某個資料庫的時候,系統報錯。連上去看了一下,伺服器是SQL2008R2。由於有上次修複的經驗,先使用DBCC查看資料庫情況。 DBCC的返回: XXXXXXXXXXX發生異常資料庫 ID 7,頁 (1:1350625) 已標記為 RestorePending,可能表明磁碟已損壞。要從此狀態恢 ...
  • 指定列之後添加: ALTER TABLE 表名 ADD 添加的新列名 INT AFTER 指定列之後 第一個位置: ALTER TABLE 表名 ADD 添加的新列名 varchar(20) AFTER FIRST 查詢所有: select * from 表 指定列: select 列名 from ...
  • --set_account_data 重新生成用戶編號 BEGIN DECLARE temp_id INT(8); /*用戶id*/ DECLARE temp_manager INT(8); /*上級id*/ DECLARE temp_accounter_no VARCHAR(64); /*上級編碼 ...
  • 1. cast()的用法 MySQL中大多數類型轉化可以使用cast(值 as 目標類型)的語法來完成。 cast後面必須緊接著左括弧: mysql> select cast(123 as char); + + | cast(123 as char) | + + | 123 | + + 1 row ...
  • 本文主要講述數據挖掘分析領域中,最常用的四種大數據分析方法:描述型分析、診斷型分析、預測型分析和指令型分析。 ...
  • MongoDB: jar包 下載地址: https://oss.sonatype.org/content/repositories/releases/org/mongodb/ mongodb的基本安裝使用: 參考地址: http://www.cnblogs.com/sxdcgaq8080/p/614 ...
  • 這是Hadoop學習全程記錄第1篇,在這篇里我將介紹一下如何在Linux下安裝Hadoop1.x。 先說明一下我的開發環境: 虛擬機:VMware8.0; 操作系統:CentOS6.4; 版本:jdk1.8;hadoop1.2.1 ①下載hadoop1.2.1,網盤:鏈接:http://pan.ba ...
  • 不可見索引概念 不可見索引(Invisible Index)是ORACLE 11g引入的新特性。不可見索引是會被優化器忽略的不可見索引,除非在會話或系統級別上將OPTIMIZER_USE_INVISIBLE_INDEXES初始化參數顯式設置為TRUE。此參數的預設值是FALSE。如果是虛擬索引是為了... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...