資料庫設計==>>MySchool

来源:http://www.cnblogs.com/zhangzongle/archive/2016/01/05/5103201.html
-Advertisement-
Play Games

1.資料庫設計的步驟第一步:需求分析(收集信息)第二步:繪製 E-R 圖 (標示實體 ,找到實體的屬性第三步:將 E-R 圖轉換成資料庫模型圖第四步:將資料庫模型圖轉換成數據表2.如何繪製 E-R 圖矩形:實體橢圓形:屬性菱形:關係3.如何繪製資料庫模型圖PowerDesigner :選擇 Phys...


1.資料庫設計的步驟

第一步:需求分析(收集信息)

第二步:繪製 E-R 圖 (標示實體 ,找到實體的屬性

第三步:將 E-R 圖轉換成資料庫模型圖

第四步:將資料庫模型圖轉換成數據表

2.如何繪製 E-R 圖
矩形:實體
橢圓形:屬性
菱形:關係

3.如何繪製資料庫模型圖
PowerDesigner :選擇 PhysicalModel
如有有人不小心關掉了 Platter,對工具欄點擊右鍵,勾選 Platter 即可。
當我們將資料庫模型圖設計完畢後,可以通過菜單中的 database下的
GenerateDatabase來生成對應的 sql

4.三大範式規範資料庫設計
第一範式:保證每列的原子性,不可再被拆分
第二範式:在滿足第一範式的基礎上,一張表只能描述一件事情
第三範式:在滿足第二範式的基礎上,除了主鍵列之外其他列都要直接依賴於
要在規範化和性能之間取一個平衡

5.T-SQL語句回顧(其中[]中的表示可省略)

1.添加數據

 insert [into] 表名 (列1,列2,...) values(值1,值2,...)

2.修改數據

 update 表名 set 列1=值1,列2=值2,... where (條件)

3.查詢數據

select 列1,列2,... from 表名 where (條件) order by 列名

4.刪除數據

delete from 表名 where (條件)

6.使用SQL語句創建和刪除資料庫

  1.創建資料庫([]表示可以省略,{}表示必需的部分,<>表示解釋說明)

 語法:

   create detabase 資料庫名

    on [primary]

     (

     <數據文件參數> [,......n] [<文件組參數>]

     )

     [log on]

    (

    {<日誌文件參數> [,......n]}

    )

 數據文件的具體參數如下:

 ([name=邏輯文件名]

 filename=物理文件名

 [,size=大小]

 [,maxsize={最大容量|unlimited}]

 [,filengrowth=增長量]) [,.....n]

 文件組的具體參數如下:

  filegroup 文件組名 <文件參數> [,......n]

eg:

create database stuDB 
on  primary  -- 預設就屬於primary文件組,可省略
(
/*--數據文件的具體描述--*/
    name='stuDB_data',  -- 主數據文件的邏輯名稱
    filename='D:\stuDB_data.mdf', -- 主數據文件的物理名稱
    size=5mb, --主數據文件的初始大小
    maxsize=100mb, -- 主數據文件增長的最大值
    filegrowth=15%--主數據文件的增長率
)
log on
(
/*--日誌文件的具體描述,各參數含義同上--*/
    name='stuDB_log',
    filename='D:\stuDB_log.ldf',
    size=2mb,
    filegrowth=1mb
)

 

2.刪除資料庫

語法:

 drop database 資料庫名

那麼如何刪除這個資料庫呢,SQL Server將資料庫的清單存放在master系統資料庫的sysdatabases表中,只需要查看該表是否存在於該資料庫中就可以,這樣在創建資料庫的時候也可以先判斷,再創建

了,語句如下:

use master -- 設置當前資料庫為master,以便訪問sysdatabases表
go
if exists(select * from sysdatabases where name='stuDB')
drop database stuDBgo

 

 7.使用SQL語句創建和刪除表

   1.回顧一下我們SQL Server 中的數據類型(轉載自http://blog.sina.com.cn/zhanshiqi)

第一大類:整數數據

bit:bit數據類型代表0,1或NULL,就是表示true,false.占用1byte.
int:以4個位元組來存儲正負數.可存儲範圍為:-2^31至2^31-1.
smallint:以2個位元組來存儲正負數.存儲範圍為:-2^15至2^15-1
tinyint: 是最小的整數類型,僅用1位元組,範圍:0至此^8-1


第二大類:精確數值數據

numeric:表示的數字可以達到38位,存儲數據時所用的位元組數目會隨著使用權用位數的多少變化.
decimal:和numeric差不多


第三大類:近似浮點數值數據

float:用8個位元組來存儲數據.最多可為53位.範圍為:-1.79E+308至1.79E+308.
real:位數為24,用4個位元組,數字範圍:-3.04E+38至3.04E+38


第四大類:日期時間數據

datatime:表示時間範圍可以表示從1753/1/1至9999/12/31,時間可以表示到3.33/1000秒.使用8個位元組.
smalldatetime:表示時間範圍可以表示從1900/1/1至2079/12/31.使用4個位元組.


第五大類:字元串數據

char:長度是設定的,最短為1位元組,最長為8000個位元組.不足的長度會用空白補上.
varchar:長度也是設定的,最短為1位元組,最長為8000個位元組,尾部的空白會去掉.
text:長寬也是設定的,最長可以存放2G的數據.


第六大類:Unincode字元串數據

nchar:長度是設定的,最短為1位元組,最長為4000個位元組.不足的長度會用空白補上.儲存一個字元需要2個位元組.
nvarchar:長度是設定的,最短為1位元組,最長為4000個位元組.尾部的空白會去掉.儲存一個字元需要2個位元組.
ntext:長度是設定的,最短為1位元組,最長為2G.尾部的空白會去掉,儲存一個字元需要2個位元組.


第七大類:貨幣數據類型

money:記錄金額範圍為:-92233720368577.5808至92233720368577.5807.需要8 個位元組.
smallmoney:記錄金額範圍為:-214748.3648至214748.36487.需要4個位元組.


第八大類:標記數據

timestamp:該數據類型在每一個表中是唯一的!當表中的一個記錄更改時,該記錄的timestamp欄位會自動更新.
uniqueidentifier:用於識別資料庫裡面許多個表的唯一一個記錄.


第九大類:二進位碼字元串數據

binary:固定長度的二進位碼字元串欄位,最短為1,最長為8000.
varbinary:與binary差異為數據尾部是00時,varbinary會將其去掉
image:為可變長度的二進位碼字元串,最長2G.

 2.創建表

 語法:

   create table 表名

   (

     列1 數據類型 列的特征,

     列2 數據類型 列的特征,

     ......

    )

  **:資料庫中表的清單存放在資料庫的系統表sysobjects中.

use StuDBgo 
if exists(select * from sysobjects where name='stuMarks')
drop table stuMarks
create table stuMarks ( ExamNo int identity(1,1) primary key, stuNo char(6) not null, writtenExam int not null, LabExam int not null ) go

其中,列屬性"identity(起始值,遞增量)" 表示"ExamNo"列為自動編號, 也稱為標識列

  3.刪除表

   語法:

 drop table 表名

 

use StuDBgo 
if exists(select * from sysobjects where name='stuMarks')
drop table stuMarks

 

 

8.使用SQL語句創建和刪除約束

 

 1.回顧一下SQL Server 中有關數據完整性

 

  (1)實體完整性:唯一確定表中一行記錄

 

  (2)域完整性:表中特定數據的有效性,以保不會輸入無效的數值

 

  (3)引用完整性:插入或刪除記錄時,維護表之間定義的關係

 

  2.添加約束

 

  語法:

 

    alter table 表名

 

    add constraint 約束名 約束類型 具體的約束說明

 

上述語法表示修改某個表,併在其中添加某個約束.其中,約束名的命名規則推薦採用"約束類型_約束列的形式

 

eg:

 

為學號(StudentNo)添加主鍵約束,約束名推薦取名"PK_StudentNo;

 

...唯一約束=>"UQ_IdentityCard;

 

...預設約束=>"DF_Address;

 

...檢查約束=>"CK_BornDate;

 

...外鍵約束=>"FK_StudentNo.

 

--添加外鍵約束(主表Student和Result建立關係,關聯StudentNo)
alter table Result
add constraint FK_StudentNo
  foreign key(StudentNo) references Student(StudentNo)
Go

 

--添加主鍵約束(將StudentNo作為主鍵)
alter table Student
add constraint PK_StudentNo primary key (Student)

--添加唯一約束(身份證)
alter table Student
add constraint UQ_IdentityCard unique (IdentityCard)

--添加預設約束(不填地址,則預設為"地址不詳")
alter table Student
add constraint DF_Address  default('地址不詳') for Address

--添加檢查約束
alter table Student
add constraint CK_BornDate ckeck (BornDate>='1980-01-01')

 

3.刪除約束

  語法:

   alter table 表名

   drop constraint 約束名

eg:

 

--Student表中地址列預設約束的語句如下
alter table Student
drop constraint DF_Address

 


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

-Advertisement-
Play Games
更多相關文章
  • 30號發現自己機房的另外一條業務線的一臺伺服器流量特別的高(單台伺服器出口流量超過900M),進入伺服器特別慢,由於流量的影響業務的訪問情況。懷疑這台linux伺服器應該中木馬了,於是緊急措施先將伺服器的WAN口宕掉,然後進行如下排查:1、病毒木馬排查。1.1、使用netstat查看網路連接,分析是...
  • linux網路流量實時監控工具之iptrafIPTraf是一個網路監控工具,功能比nload更強大,可以監控所有的流量,IP流量,按協議分的流量,還可以設置過濾器等,如下圖對監控網路來說,這個更適合也更強大,但在總的流量顯示上,沒nload直觀和方便官網及下載 http://iptraf.seul....
  • 五種狀態模式:終極鉤子提醒者延遲事件正交組件轉換到歷史1.終極鉤子模式俗語:老爸對兒子說,你可以按你的特殊方式去做事,但如果你不做,我會做。目的:公共的處理功能放到父狀態,並可以在子狀態中重載,以實現特殊的功能。為什麼叫終極鉤子,因為如果子狀態不處理,總會在父狀態中得到處理,是個終極的處理。問題:父...
  • 1.首先確認伺服器出於安全的狀態,也就是沒有人能夠任意地連接MySQL資料庫。因為在重新設置MySQL的root密碼的期間,MySQL資料庫完全出於沒有密碼保護的狀態下,其他的用戶也可以任意地登錄和修改MySQL的信息。可以採用將MySQL對外的埠封閉,並且停止Apache以及所有的用戶進程的方法...
  • 經常有這樣的需求,我們在Windows下載的軟體包,如何上傳到遠程Linux主機上?還有如何從Linux主機下載軟體包到Windows下;之前我的做法現在看來好笨好繁瑣,不過也達到了目的,笨人有本方法嘛;我是怎麼操作的:1、打開一臺本地Linux虛擬機,使用mount 掛載Windows的共用文件夾...
  • Having--對分組信息進行過濾,因為分組之後的信息和原來的表信息沒有關係了,Having可以用的之後,出現在Group子句中的列,還有聚合函數 SELECT s_Age ,COUNT(s_ID)FROM dbo.Student GROUP BY s_Age--正確的 SELECT s_Age ,...
  • Group By:對數據進行分組,分組之後的數據就是“分組信息”,和原來表的信息,就沒有聯繫了,分組之後,可以取到分組數據,就是根據什麼欄位分組,就能取到欄位的名字了。還能使用聚合函數。Group By和Order By都是要放在Where語句之後,Group By和Order By都是對篩選後的數...
  • Innotop是一款十分強大的MySQL監控工具,用perl所寫,通過文本模式展示MysQL伺服器和Innodb的運行狀況。安裝innotop下載地址:https://github.com/innotop/innotopGithub上提供兩種版本,一種是開發版(innotop-master),一種是...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...