當前位置:首頁 » 數據倉庫 » 資料庫浮點設計
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫浮點設計

發布時間: 2023-06-09 20:00:37

資料庫的數據類型

資料庫的常用數據類型如下:
一、整數數據類型:整數數據類型是最常用的數據類型之一。二、浮點數據類型:浮點數據類型用於存儲十進制小數。浮點數值的數據在sqlServer中採用上舍入(Rounp或稱為只入不舍)方式進行存儲。三、二進制數據類型。四、邏輯數據類型。五、字元數據類型:字元數據類型是使用最多的數據類型。它可以用來存儲各種字母、數字元號、特殊符號。一般情況下,使用字元類型數據時須在其前後加上單引號』或雙引號」。
以上就是資料庫的常用數據類型。

② 資料庫那個類型能支持32位的浮點型,SQLServer只有float,有沒有類型支持32位小數點的

real是4位元組32位浮點
float是8位元組64位浮點

③ 以下那種類別對應數據的字元類屬性

整數類型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT

浮點數類型:FLOAT、DOUBLE、DECIMAL

字元串類型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB

日期類型:Date、DateTime、TimeStamp、Time、Year

其他數據類型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等

1、整型
數據類型 位元組及范圍
tinyint(m) 1個位元組 (-128~127)
smallint(m) 2個位元組 (-32768~32767)
mediumint(m) 3個位元組 (-8388608~8388607)
int或integer(m) 4個位元組 (-2147483648~2147483647)
bigint(m) 8個位元組 (±9.22*10的18次方)
整型括弧中里的m是表示SELECT查詢結果集中的顯示寬度,並不攔基影響實際的取值范圍,沒有影響到顯示的寬度。(可以略過這個東西)

2、浮簡吵謹點型
數據類型 定義
float(m,d) 單精度浮點型 8位精度(4位元組)
double(m,d) 雙精度浮點型 16位精度(8位元組)
m總個數,d小數位。設一個欄位定義為float(6,3),如果插入一個數123.45678,實際資料庫里存的是123.457,但總個數還以實際為准,即6位。整數部分最大是3位。如果插入數12.123456,存儲的是12.1234,如果插入12.12,存儲的是12.1200.

3、定點數
①浮點型在資料庫中存放的是近似值,而定點類型在資料庫中存放的是精確值。
decimal(m,d)
②DECIMAL 類型不同於FLOAT和DECIMAL,其中DECIMAL 實際是以串存放的。DECIMAL 可能的最大取值范圍與DOUBLE 一樣,但是其有效的取值范圍由M 和D 的值決定。
給定的DECIMAL 類型的取值范圍取決於MySQL數據類型的版本。
③ 對貨幣等對精度敏感的數據,應該用定點數表示或存儲;
在這里插入圖片描述

4、字元串
數據類型 大小
char(n) 固定長度,最多255個字元
varchar(n) 固定長度,最多65535個字元
tinytext 可變長度,最多255個字元
text 可變長度,最多65535個字元
mediumtext 可變長度,最多2的24次方-1個字元
longtext 可變長度,最多2的32次方-1個字元
區別char和varchar:

①char(n) 若存入字元數小於n,則以空格補於其後,查詢之時再將空格去掉。所以char類型存儲的字元串末尾不能有空格,varchar不限於此。
②char(n) 固定長度,char(4)不管是存入幾個字元,都將佔用4個位元組;varchar是存入的實際字元數+1個位元組(n<=255)或2個位元組(n>255),所以varchar(4),存入3個字元將佔用4個位元組。
③char類型的字元串檢索速度要比varchar類型的快。

5、二進制數據(_Blob)
1._BLOB和_text存儲方式不同,_TEXT以文本方式存儲,英文存儲區分大小寫,而_Blob是以二進制方式存儲,不分大小寫。

2._BLOB存儲的數據只能整體讀出。

3._TEXT可以指定字元集,_BLO不用指定字元集。

6、日期碰告和時間類型
作用:存儲用戶注冊時間,文章發布時間,員工入職時間,出生時間,過期時間等

數據類型 定義
DATE 日期 『2008-12-2』
TIME 時間 『12:25:36』
YEAR 年份 『2008』
DATETIME 日期時間 『2008-12-2 22:06:44』
TIMESTAMP 自動存儲記錄修改時間
註:①TIMESTAMP列用於INSERT或UPDATE操作時記錄日期和時間。如果不分配一個值,表中的第一個TIMESTAMP列自動設置為最近操作的日期和時間。
②也可以通過分配一個NULL值,將TIMESTAMP列設置為當前的日期和時間。TIMESTAMP值返回後顯示為』YYYY-MM-DD HH:MM:SS』格式的字元串。
③有專有的自動更新特性。

二、數據類型屬性
關鍵字 含義
NULL 數據列可包含NULL值
NOT NULL 數據列不允許包含NULL值
DEFAULT 默認值
PRIMARY KEY 主鍵
AUTO_INCREMENT 自動遞增,適用於整數類型
UNSIGNED 無符號
CHARACTER SET name 指定一個字元集
三、簡單介紹幾個存儲引擎
1、MyISAM 數據存儲引擎和數據列
MyISAM數據表,最好使用固定長度(CHAR)的數據列代替可變長度(VARCHAR)的數據列。

2、MEMORY存儲引擎和數據列
MEMORY數據表目前都使用固定長度的數據行存儲,因此無論使用CHAR或VARCHAR列都沒有關系。兩者都是作為CHAR類型處理的。

3、InnoDB 存儲引擎和數據列(重要)
建議使用 VARCHAR類型。

也可以用show engines;語句查看所有引擎
在這里插入圖片描述

以下幾個例子
1、時間和日期
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
2、set
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
3、datatime
在這里插入圖片描述
4、TIMESTAMP

CREATE TABLE timestamp_db(
a TIMESTAMP
);
INSERT timestamp_db() VALUES(20020121);
INSERT timestamp_db() VALUES(20020121142554);
INSERT timestamp_db() VALUES("2015-12-16 21:14:15");
INSERT timestamp_db() VALUES("2015-12-17");
INSERT timestamp_db() VALUES(NULL);
INSERT timestamp_db() VALUES(CURRENT_TIMESTAMP);
INSERT timestamp_db() VALUES();
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
在這里插入圖片描述
5、YEAR
在這里插入圖片描述

文章知識點與官方知識檔案匹配
MySQL入門技能樹資料庫組成表
22468 人正在系統學習中
點擊閱讀全文
打開CSDN,閱讀體驗更佳

評論(2) 請先 登錄 後發表或查看評論
...知識之數據類型_小玉玉玉玉呀的博客_資料庫數據類型
四、日期時間類型 1、數據類型 date裡面 Y是年,M是月,D是天,即年月日;time裡面 H是時,M是分,S是秒 ,即時分秒。 eg:表中的money是充值金額,接著記錄一下充值時間,先添加一個時間欄位,類型是datetime, 然後刷新表格,再打開,...
MySQL資料庫中幾種常見的數據類型分享_ysds20211402的博客...
一、數據類型是什麼? 數據類型是指列、存儲過程參數、表達式和局部變數的數據特徵,它決定了數據的存儲格式,代表了不同的信息類型。 有一些數據是要存儲為數字的,數字當中有些是要存儲為整數、小數、日期型等... ...
Oracle 數據類型
Oracle的數據類型: 1、CHAR數據類型,該類型是固定長度的字元串,如果沒指定大小,則默認佔用一位元組,如果輸入的值小於指定的長度,則資料庫用空格填充至固定長度,如果用戶輸入的值大於指定的長度,則資料庫返回錯誤信息 2、varchar2,用於存儲可變長度的字元串,使用該數據類型可節省磁碟空間,但存儲效率沒有CHAR高 3、NCHAR和nvarchar2,NCHAR和CHAR區別在於NCHAR用來存儲Unicode字元集類型,即雙位元組字元數據,CHAR是一個位元組,而NCAHR是一個字元(兩個位元組),前者是CHAR(1)無法插入『的』,後者是NCHAR(1)可以插入『的』 4、NUMBER表示數值數據類型,NUMBER(P,S),P為精度,表示數據的總位數,S為范圍,表示小數點右邊數字的位數 5、DATE數據類型,使用7個位元組固定長度,每個位元組分別存儲世紀,年,月,日 ,時,分,秒,ORACLE中SYSDATE函數的功能是返回當前的日期和時間 6、TIMESTAMP數據類型,和DATE相似,但是這個類型的秒精確到小數點後6位,而DATE沒有秒的小數部分 7、LOB數據類型用於存儲大型的,沒有被結構化的數據,例如二進制文件,圖片文件,LOB主要分為BLOB和CLOB,BLOB數據類型用於存儲二進制對象:圖像,音頻,視頻...CLOB數據類型用於存儲字元格式的大型對象 8、ORACLE其實也支持INTEGER,FLOAT,DOUBLE,VARCHAR,最好用ORACLE自身的NUMBER 和 VARCHAR2
資料庫:常見的數據類型
文章目錄一、常見的數據類型1.數值型 一、常見的數據類型 1、數值型: 整型 小數: 定點數 浮點型 2、字元型: 較短的文本:char、varchar 較長的文本:text、blob(較長的二進制數據) 3、日期型 1.數值型 (1)整型 整數類型 位元組 范圍 Tinyint 1 有符號:-128~127 , 無符號:0~225
繼續訪問
資料庫的類型_彬仔二號的博客_資料庫類型
ps:資料庫的類型主要分為四大類:一:關系型資料庫。二:非關系型資料庫。三:網狀資料庫。四:層次資料庫。目前最常見的資料庫模型主要是:關系型資料庫和非關系型資料庫。 ps:這里我們主要說關系型資料庫和非關系型資料庫。
資料庫的數據類型
之前介紹了 資料庫基本常識的簡介及mysql安裝 結構化查詢語言sql 資料庫表介紹 接下來說一下資料庫的數據類型 資料庫的數據類型主要包括以下幾種 整數類型:一般常用的就是int=integer。可以在int後面加顯示寬度,例如int(4),但是超過這個長度也不會報錯,會進行自動擴充。 浮點類型:一般常用的是double。指定小數位和總長度double(4,1),表示小數點後保留1位,總長度為4位,並且不會自動擴充。如果出現插入的小數位數較多,則會進行四捨五入。 字元串類型:char和varch
繼續訪問

MySQL資料庫中幾種常見的數據類型分享
轉自:微點閱讀https://www.weidianyue.com 一、數據類型是什麼? 數據類型是指列、存儲過程參數、表達式和局部變數的數據特徵,它決定了數據的存儲格式,代表了不同的信息類型。 有一些數據是要存儲為數字的,數字當中有些是要存儲為整數、小數、日期型等... 二、MYSQL常見數據類型 MySQL支持多種類型,大致可以分為四類:數值型、浮點型、日期/時間和字元串(字元)類型。 1、數值類型 MySQL支持所有標准SQL數值數據類型。 這些數值類型包括嚴格數值數據類型..
繼續訪問
資料庫的類型
ps:資料庫的類型主要分為四大類:一:關系型資料庫。二:非關系型資料庫。三:網狀資料庫。四:層次資料庫。目前最常見的資料庫模型主要是:關系型資料庫和非關系型資料庫。ps:這里我們主要說關系型資料庫和費關系型資料庫。1. 關系型資料庫關系型資料庫模型是將復雜的數據結構用較為簡單的二元關系(二維表)來表示,如圖1-4所示。在該類型資料庫中,對數據的操作基本上都建立在一個或多個表格上,我們可以採用結構化查詢語言(SQL)對資料庫進行操作。關系型資料庫是目前主流的資料庫技術,其中具有代表性的資料庫管理系統有:Ora
繼續訪問
資料庫基礎知識之數據類型
mysql常用數據類型 一、數值類型(整型、浮點型) 1、整型 eg:添加一個表格:點擊表——添加欄位——名稱——類型,年齡age是tinyint類型,要在下方勾選無符號,因為年齡都是正數,不存在負數一說,所以不需要符號。 點擊保存,然後輸入表名,比如t1,就出現了t1 然後雙擊表裡面的null就可以修改值了 如果在年齡里寫了一個負數,再按ctrl+s保存,就會報錯: 由於范圍是0-255,所以當寫了256時,也會報錯: 2、浮點型 eg:想添加...
繼續訪問

資料庫修改數據類型
資料庫修改數據類型 在日常使用資料庫中,或多或少都會遇到要修改資料庫表中欄位的數據類型,有一種方法是直接點「設計」,就可以修改了,但往往都不行,會提示為「不允許保存修改」 那就用另一種方法。可以看到,表中的「B02_2」的數據類型是『nchar』,就把它數據類型修改為『int』 首先新建一個查詢 接著在查詢窗口裡輸入SQL 查詢語句,查詢表結構,找到需要修改的欄位 然後執行下面語句,命令已成功完成。 最後表中的「B02_2」的數據類型就修改為『int』了
繼續訪問

資料庫中修改數據類型
UNIT_PRICE :資料庫原先類型為: NUMBER(18,4) AMOUNT : 資料庫原先類型為: NUMBER(18,4) 如果直接進行修改會報錯,因為原先欄位中已經有數據了。 ALTER TABLE CLOUD_RELEASE.CONTRACT_PRODUCT_ITEM MODIFY(UNIT_PRICE NUMBER(18,6)); ALTER TABLE CLOUD_RELEASE.CONTRACT_PRODUCT_ITEM MODIFY(AMOUNT NUMBER(18,6));
繼續訪問
資料庫常見數據類型
常見的數據類型: 數值型: 整型:tinyint(1位元組)、smallint(2位元組)、mediumint(3位元組)、int/integer(4位元組)、bigint(8位元組) 特點:默認是有符號的,要設置無符號,需添加unsigned關鍵字;不設置長度,會有默認的長度,長度代表了顯示的最大寬度,如果不夠會用0在左邊填充。 小數: 浮點型:float(M,D)、double(M,D) 定點型:dec(M,D)、decimal(M,D) M:整數部位+小數部位 D:小數部位 M和D都可以省略
繼續訪問
【mysql】 數據表修改欄位的數據類型
【mysql】 數據表修改欄位的數據類型1、背景2、修改欄位的數據類型 1、背景 當數據表創建之後,發現數據表欄位的數據類型不合適,我們可以立即刪除後重新創建; 但是一旦存上大量數據之後,我們更希望直接修改數據表; 即修改數據表: 修改表指的是修改資料庫中已經存在的數據表的結構。 MySQL 中使用 ALTER TABLE 語句修改表。 2、修改欄位的數據類型 本博客涉及數據表中修改欄位的數據類型,即把欄位的數據類型轉換成另一種數據類型。 在 MySQL 中修改欄位數據類型的語法規則如下: ALTER TA
繼續訪問
資料庫中有哪幾種數據類型?
資料庫中有哪幾種數據類型? 整型: tiny int,small int,medium int,int,big int,大小分別為 8,16,24,32,64位。 浮點型: float、double 字元串類型: 定長的 char,變長的 varchar。在進行存儲時,char 會刪除末尾的空格,varchar 會保留末尾的空格。 日期時間類型: 與時區無關的 data time,與時區有關的 ...
繼續訪問
熱門推薦 八大基本數據類型(超詳細)
學習目標: Java八大數據類型: (1)整數類型:byte、short、int、long (2)小數類型:float、double (3)字元類型:char (4)布爾類型:boolean 學習內容: 1、 整數數據類型 byte:1個位元組,8位,256種狀態,取值范圍為【-128,127】 short:2個位元組,16位,65536種狀態,取值范圍為【-32768,32767】 int:4個位元組,32位,整數類型默認是int類型,取值范圍約21億 long:8個位元組,64位,long類型表示long類
繼續訪問
數據類型有哪些?如何判斷數據類型?
數據類型有哪些?如何判斷數據類型? 一、數據類型有兩種, 一種基本數據類型, 一種引用數據類型, 基本數據都有,string、number、Boolean、null、undefined; 引用數據類型有object, es6新增一個symbol 1、symbol類型 Symbol()返回的symbol值都是唯一的,使用Symbol()創建新的symbol值,並用一個可選的字元串作為其描述 —— 描述相同的兩個Symbol值依然是不同的 2、undefined類型 只有一個值。在使用var聲明變數但未對其加初
繼續訪問
資料庫常用的數據類型
數據類型1.整型:bit(布爾型):只能輸入true或false,輸入1是自動轉化為TRUE,0是自動轉化為FALSEtinyint:只能輸入0到225之間的整數smallint(兩個位元組組成的整數):-32768~32767int(四個位元組組成的整數):2的31次方bigint(八個位元組組成的整數):2的63次方2.貨幣型:money,可以四位小數3.日期型:data:2001.1.1~9999...
繼續訪問
21 常見的數據類型
常見的數據類型 1、數值型:整型、浮點型(定點數、浮點數) 2、字元型:較短的文本:CHAR、VARCHAR 較長的文本:TEXT、BLOB(較長的二進制數據) 3、日期型 一、整型 整數類型 位元組 范圍 Tinyint 1 有符號:-128-127 無符號:0~255 Smallint 2 有符號:-32768~32767 無符號:0~65536 Mediumint 3 有符號:-8388608~8388607 無符號:0~1677215 Int、Integer 4 有符
繼續訪問
最新發布 資料庫基本增刪改查語法和多表聯查方式
我們想要操作資料庫,主要需要使用的基本指令就是增刪改查,主要包括四個關鍵字,增:insert,刪:delete,改:update,查:select。接下來詳細的講一下這四種關鍵字的使用。
繼續訪問

SQL中改變列的數據類型
一、該列非主鍵、無default約束 直接更新: alter table 表名 alter column 列名 數據類型 二、該列為主鍵列、無default約束 (1)刪除主鍵 alter table 表名 drop constraint 主鍵名稱 (2)更新數據類型 alter table 表名 alter column 列名 數據類型 not null (3)添加主鍵 alter table ...
繼續訪問
MySQL修改列名稱或列的數據類型
一、只修改列的數據類型的方法: 語法: alter table 表名 modify column 列名 新的列的類型 例如:student表中列stu_name的類型是char(20),現在要修改為varchar(20),SQL語句如下 alter table student modify column stu_name varchar(20); 二、同時修改列名和列的數據
繼續訪問
python六種數據類型的增刪改查
六種數據類型的增刪改查1、字元串str2、列表list3、元組tuple4、字典dict5、集合set可變類型:list、set、dict不可變類型:string、tuple、數字型 1、字元串str 增:拼接+,* 刪:無 改:不可修改 查:index查字元串的索引值 2、列表list 增:append、insert、extend、update 刪:pop、del、remove、clear 改:...
繼續訪問
資料庫數據類型

④ mysql的浮點型在什麼情況下會損失精度,求大神詳解、、

談談個人理解,請帶著懷疑和鑒別的角度去看待。
1 先理解下定點數
--定義:
指規定小數點位置固定不變。
--存儲:
* 在資料庫或計算機中存儲時,整數部分和小數部分分別使用一定的位元組來存儲(理解為分別用兩部分位元組來存儲兩個整數),小數點是作為存儲屬性存儲的(如作為列類型時,小數點位置存儲在表的定義部分),而不佔用數據的存儲位元組。
* 定點數使用多少位元組來存放數據,依賴於該數指定的精度(精度即為該數的總數字位數),總數字位數為小於2則使用1位元組,為5-9位時用4位元組,為19-38位時使用16位元組(大部分資料庫支持的最大就是38位數字);
--舉例:
numeric(2,1),精度為2,使用1個位元組來存放,存放數據范圍為[-9.9, 9.9];如存儲2.3時,在資料庫存儲為00100011,而小數位置固定在第四位前,這是由定義列時指明的;
--說明:
定點數存儲精確的數字,numeric(2,1)就只能[-9.9, 9.9]之間的數,存的不是近似數(因為兩部分都作為整數存儲);當你在numeric(2,1)中存儲2.33時,實際發生了隱式轉換,實際存儲為9.3(注意這並不是近似);

2 再來理解浮點數
--定義:
指採用浮點數表達方式來表示數據,這種表達方式利用科學計數法來表達實數,即用一個尾數(Mantissa ),一個基數(Base),一個指數(Exponent)以及一個表示正負的符號來表達數據,比如 123.45 用十進制科學計數法可以表達為 1.2345 × 10^2,其中 1.2345 為尾數,10 為基數,2 為指數。稱其為浮點數就是因為利用指數達到了浮動小數點的效果。
--存儲:
浮點數一般是使用IEEE規定的方式,即 對於單精度浮點數用1bit來存儲符號位(正負號),8bit來存儲指數,23bit來存儲尾數;而且要求尾數的整數部分為1(注意,指二進位格式的,如1.01001),而且是使用二進位來保存,即基數為2;
在大多數資料庫或計算機中存儲時,單精度使用4位元組,雙精度使用8位元組保存;
--舉例:
二進制的 1001.101(對應於十進制的 9.625)可以表達為 1.001101 × 2^3,存儲時符號位+存儲為0,指數3存儲為00000011,尾數1.001101存儲為0011010000..(總共23位,去掉了小數點前的1,IEEE就是這樣要求的);
--近似的產生:
因為我們使用的是十進制數,而計算機要轉換為對應的二進制形式,由於有限的2進制位數表示的小數值不能和十進制一一對應(換句話說,十進制小數轉為二進制可能變為無限小數而導致不精確 ),如2^-1對應0.5,2^-2對應0.25,2^-3對應0.125,因此對於像十進制的0.4(小數的末尾一位數不為5的)則不能精確存儲;
--因近似引起的問題:
create table t (a float, b float); insert into t values(0.11, 0.04), (0.04, 0.11);
select * from t; 查詢時顯示正常,實際底層存儲時發生了近似(十進制轉換為二進制),而顯示時又發生了近似(二進制轉換為十進制);
select sum(a) from t; 查詢顯示 0.14999999850988388 ,為什麼不是0.15的原因也就不言而喻了。
這也就是浮點數在損失精度、計算和比較要格外注意的事項;

3 總結
定點數,能存儲精確數字,但保存的數據范圍受了嚴格限制,格式也比較僵硬(這既是好處,也是壞處);
浮點數,不能存儲精確數字,在小數的末尾一位數不是5(一直乘2不能圓整)的情況下會發生存儲的近似處理;但可存儲的數據范圍更大;

⑤ sql資料庫中的Float數據類型是占幾位,幾個位元組 ,也就是占幾個0和1

sql資料庫中的Float數據類型是占幾位,幾個位元組
,也就是占幾個0和1
FLOAT數據類型可精確到第15位小數,其范圍為從-1.79e-308到1.79e+308.每個float類型的數據佔用8個位元組的存儲空間。
float數據類型可寫為float([n])的形式。n指定Float數據的精度。n為1到15之間的整數值。當n取1到7時,實際上是定義了一個real類

⑥ 資料庫如何設計

資料庫設計的基本步驟

按照規范設計的方法,考慮資料庫及其應用系統開發全過程,將資料庫設計分為以下6個階段

1.需求分析

2.概念結構設計

3.邏輯結構設計

4.物理結構設計

5.資料庫實施

6.資料庫的運行和維護


資料庫設計通常分為6個階段1分析用戶的需求,包括數據、功能和性能需求;2概念結構設計:主要採用E-R模型進行設計,包括畫E-R圖;3邏輯結構設計:通過將轉換成表,實現從E-R模型到關系模型的轉換;4:主要是為所設計的資料庫選擇合適的和存取路徑;5資料庫的實施:包括編程、測試和試運行;6資料庫運行與維護:系統的運行與資料庫的日常維護。),主要討論其中的第3個階段,即邏輯設計。



在資料庫設計過程中,需求分析和概念設計可以獨立於任何資料庫管理系統進行,邏輯設計和物理設計與選用的DAMS密切相關。

1.需求分析階段(常用自頂向下)

進行資料庫設計首先必須准確了解和分析用戶需求(包括數據與處理)。需求分析是整個設計過程的基礎,也是最困難,最耗時的一步。需求分析是否做得充分和准確,決定了在其上構建資料庫大廈的速度與質量。需求分析做的不好,會導致整個資料庫設計返工重做。

需求分析的任務,是通過詳細調查現實世界要處理的對象,充分了解原系統工作概況,明確用戶的各種需求,然後在此基礎上確定新的系統功能,新系統還得充分考慮今後可能的擴充與改變,不僅僅能夠按當前應用需求來設計。

調查的重點是,數據與處理。達到信息要求,處理要求,安全性和完整性要求。

分析方法常用SA(Structured Analysis) 結構化分析方法,SA方法從最上層的系統組織結構入手,採用自頂向下,逐層分解的方式分析系統。

數據流圖表達了數據和處理過程的關系,在SA方法中,處理過程的處理邏輯常常藉助判定表或判定樹來描述。在處理功能逐步分解的同事,系統中的數據也逐級分解,形成若干層次的數據流圖。系統中的數據則藉助數據字典(data dictionary,DD)來描述。數據字典是系統中各類數據描述的集合,數據字典通常包括數據項,數據結構,數據流,數據存儲,和處理過程5個階段。

2.概念結構設計階段(常用自底向上)

概念結構設計是整個資料庫設計的關鍵,它通過對用戶需求進行綜合,歸納與抽象,形成了一個獨立於具體DBMS的概念模型。

設計概念結構通常有四類方法:

  • 自頂向下。即首先定義全局概念結構的框架,再逐步細化。

  • 自底向上。即首先定義各局部應用的概念結構,然後再將他們集成起來,得到全局概念結構。

  • 逐步擴張。首先定義最重要的核心概念結構,然後向外擴張,以滾雪球的方式逐步生成其他的概念結構,直至總體概念結構。

  • 混合策略。即自頂向下和自底向上相結合。

  • 3.邏輯結構設計階段(E-R圖)

    邏輯結構設計是將概念結構轉換為某個DBMS所支持的數據模型,並將進行優化。

    在這階段,E-R圖顯得異常重要。大家要學會各個實體定義的屬性來畫出總體的E-R圖。

    各分E-R圖之間的沖突主要有三類:屬性沖突,命名沖突,和結構沖突。

    E-R圖向關系模型的轉換,要解決的問題是如何將實體性和實體間的聯系轉換為關系模式,如何確定這些關系模式的屬性和碼。

    4.物理設計階段

    物理設計是為邏輯數據結構模型選取一個最適合應用環境的物理結構(包括存儲結構和存取方法)。

    首先要對運行的事務詳細分析,獲得選擇物理資料庫設計所需要的參數,其次,要充分了解所用的RDBMS的內部特徵,特別是系統提供的存取方法和存儲結構。

    常用的存取方法有三類:1.索引方法,目前主要是B+樹索引方法。2.聚簇方法(Clustering)方法。3.是HASH方法。

    5.資料庫實施階段

    資料庫實施階段,設計人員運營DBMS提供的資料庫語言(如sql)及其宿主語言,根據邏輯設計和物理設計的結果建立資料庫,編制和調試應用程序,組織數據入庫,並進行試運行。

    6.資料庫運行和維護階段

    資料庫應用系統經過試運行後,即可投入正式運行,在資料庫系統運行過程中必須不斷地對其進行評價,調整,修改。

    資料庫設計5步驟
    Five Steps to design the Database

    1.確定entities及relationships

    a)明確宏觀行為。資料庫是用來做什麼的?比如,管理雇員的信息。

    b)確定entities。對於一系列的行為,確定所管理信息所涉及到的主題范圍。這將變成table。比如,僱用員工,指定具體部門,確定技能等級。

    c)確定relationships。分析行為,確定tables之間有何種關系。比如,部門與雇員之間存在一種關系。給這種關系命名。

    d)細化行為。從宏觀行為開始,現在仔細檢查這些行為,看有哪些行為能轉為微觀行為。比如,管理雇員的信息可細化為:

    · 增加新員工

    · 修改存在員工信息

    · 刪除調走的員工

    e)確定業務規則。分析業務規則,確定你要採取哪種。比如,可能有這樣一種規則,一個部門有且只能有一個部門領導。這些規則將被設計到資料庫的結構中。

    ====================================================================
    範例:
    ACME是一個小公司,在5個地方都設有辦事處。當前,有75名員工。公司准備快速擴大規模,劃分了9個部門,每個部門都有其領導。
    為有助於尋求新的員工,人事部門規劃了68種技能,為將來人事管理作好准備。員工被招進時,每一種技能的專業等級都被確定。


    定義宏觀行為
    一些ACME公司的宏觀行為包括:
    ● 招聘員工
    ● 解僱員工
    ● 管理員工個人信息
    ● 管理公司所需的技能信息
    ● 管理哪位員工有哪些技能
    ● 管理部門信息
    ● 管理辦事處信息
    確定entities及relationships
    我們可以確定要存放信息的主題領域(表)及其關系,並創建一個基於宏觀行為及描述的圖表。
    我們用方框來代表table,用菱形代表relationship。我們可以確定哪些relationship是一對多,一對一,及多對多。
    這是一個E-R草圖,以後會細化。


    細化宏觀行為
    以下微觀行為基於上面宏觀行為而形成:
    ● 增加或刪除一個員工
    ● 增加或刪除一個辦事處
    ● 列出一個部門中的所有員工
    ● 增加一項技能
    ● 增加一個員工的一項技能
    ● 確定一個員工的技能
    ● 確定一個員工每項技能的等級
    ● 確定所有擁有相同等級的某項技能的員工
    ● 修改員工的技能等級

    這些微觀行為可用來確定需要哪些table或relationship。

    確定業務規則
    業務規則常用於確定一對多,一對一,及多對多關系。
    相關的業務規則可能有:
    ● 現在有5個辦事處;最多允許擴展到10個。
    ● 員工可以改變部門或辦事處
    ● 每個部門有一個部門領導
    ● 每個辦事處至多有3個電話號碼
    ● 每個電話號碼有一個或多個擴展
    ● 員工被招進時,每一種技能的專業等級都被確定。
    ● 每位員工擁有3到20個技能
    ● 某位員工可能被安排在一個辦事處,也可能不安排辦事處。

    2.確定所需數據

    要確定所需數據:

    a)確定支持數據

    b)列出所要跟蹤的所有數據。描述table(主題)的數據回答這些問題:誰,什麼,哪裡,何時,以及為什麼

    c)為每個table建立數據

    d)列出每個table目前看起來合適的可用數據

    e)為每個relationship設置數據

    f)如果有,為每個relationship列出適用的數據

    確定支持數據

    你所確定的支持數據將會成為table中的欄位名。比如,下列數據將適用於表Employee,表Skill,表Expert In。

    Employee

  • Skill

  • Expert In

  • ID

  • ID

  • Level

  • Last Name

  • Name

  • Date acquired

  • First Name

  • Description

  • Department

  • Office

  • Address


  • 如果將這些數據畫成圖表,就像:


  • 需要注意:

  • ● 在確定支持數據時,請一定要參考你之前所確定的宏觀行為,以清楚如何利用這些數據。

  • ● 比如,如果你知道你需要所有員工的按姓氏排序的列表,確保你將支持數據分解為名字與姓氏,這比簡單地提供一個名字會更好。

  • ● 你所選擇的名稱最好保持一致性。這將更易於維護資料庫,也更易於閱讀所輸出的報表。

  • ● 比如,如果你在某些地方用了一個縮寫名稱Emp_status,你就不應該在另外一個地方使用全名(Empolyee_ID)。相反,這些名稱應當是Emp_status及Emp_id。

  • ● 數據是否與正確的table相對應無關緊要,你可以根據自己的喜好來定。在下節中,你會通過測試對此作出判斷。
  • 3.標准化數據

    標准化是你用以消除數據冗餘及確保數據與正確的table或relationship相關聯的一系列測試。共有5個測試。本節中,我們將討論經常使用的3個。
    關於標准化測試的更多信息,請參考有關資料庫設計的書籍。

    標准化格式
    標准化格式是標准化數據的常用測試方式。你的數據通過第一遍測試後,就被認為是達到第一標准化格式;通過第二遍測試,達到第二標准化格式;通過第三遍測試,達到第三標准化格式。

    如何標准格式:
    1. 列出數據
    2. 為每個表確定至少一個鍵。每個表必須有一個主鍵。
    3. 確定relationships的鍵。relationships的鍵是連接兩個表的鍵。
    4. 檢查支持數據列表中的計算數據。計算數據通常不保存在資料庫中。
    5. 將數據放在第一遍的標准化格式中:
    6. 從tables及relationships除去重復的數據。
    7. 以你所除去數據創建一個或更多的tables及relationships。
    8. 將數據放在第二遍的標准化格式中:
    9. 用多於一個以上的鍵確定tables及relationships。
    10. 除去只依賴於鍵一部分的數據。
    11. 以你所除去數據創建一個或更多的tables及relationships。
    12. 將數據放在第三遍的標准化格式中:
    13. 除去那些依賴於tables或relationships中其他數據,並且不是鍵的數據。
    14. 以你所除去數據創建一個或更多的tables及relationships。

    數據與鍵
    在你開始標准化(測試數據)前,簡單地列出數據,並為每張表確定一個唯一的主鍵。這個鍵可以由一個欄位或幾個欄位(連鎖鍵)組成。

    主鍵是一張表中唯一區分各行的一組欄位。Employee表的主鍵是Employee ID欄位。Works In relationship中的主鍵包括Office Code及Employee ID欄位。給資料庫中每一relationship給出一個鍵,從其所連接的每一個table中抽取其鍵產生。

    RelationShip

  • Key

  • Office

  • *Office code

  • Office address

  • Phone number

  • Works in

  • *Office code

  • *Employee ID

  • Department

  • *Department ID

  • Department name

  • Heads

  • *Department ID

  • *Employee ID

  • Assoc with

  • *Department ID

  • *EmployeeID

  • Skill

  • *Skill ID

  • Skill name

  • Skill description

  • Expert In

  • *Skill ID

  • *Employee ID

  • Skill level

  • Date acquired

  • Employee

  • *Employee ID

  • Last Name

  • First Name

  • Social security number

  • Employee street

  • Employee city

  • Employee state

  • Employee phone

  • Date of birth


  • 將數據放在第一遍的標准化格式中
    ● 除去重復的組
    ● 要測試第一遍標准化格式,除去重復的組,並將它們放進他們各自的一張表中。
    ● 在下面的例子中,Phone Number可以重復。(一個工作人員可以有多於一個的電話號碼。)將重復的組除去,創建一個名為Telephone的新表。在Telephone與Office創建一個名為Associated With的relationship。

    將數據放在第二遍的標准化格式中
    ● 除去那些不依賴於整個鍵的數據。
    ● 只看那些有一個以上鍵的tables及relationships。要測試第二遍標准化格式,除去那些不依賴於整個鍵的任何數據(組成鍵的所有欄位)。
    ● 在此例中,原Employee表有一個由兩個欄位組成的鍵。一些數據不依賴於整個鍵;例如,department name只依賴於其中一個鍵(Department ID)。因此,Department ID,其他Employee數據並不依賴於它,應移至一個名為Department的新表中,並為Employee及Department建立一個名為Assigned To的relationship。


    將數據放在第三遍的標准化格式中
    ● 除去那些不直接依賴於鍵的數據。
    ● 要測試第三遍標准化格式,除去那些不是直接依賴於鍵,而是依賴於其他數據的數據。
    ● 在此例中,原Employee表有依賴於其鍵(Employee ID)的數據。然而,office location及office phone依賴於其他欄位,即Office Code。它們不直接依賴於Employee ID鍵。將這組數據,包括Office Code,移至一個名為Office的新表中,並為Employee及Office建立一個名為Works In的relationship。

    4.考量關系

    當你完成標准化進程後,你的設計已經差不多完成了。你所需要做的,就是考量關系。

    考量帶有數據的關系
    你的一些relationship可能集含有數據。這經常發生在多對多的關系中。

    遇到這種情況,將relationship轉化為一個table。relationship的鍵依舊成為table中的鍵。

    考量沒有數據的關系
    要實現沒有數據的關系,你需要定義外部鍵。外部鍵是含有另外一個表中主鍵的一個或多個欄位。外部鍵使你能同時連接多表數據。

    有一些基本原則能幫助你決定將這些鍵放在哪裡:

    一對多在一對多關系中,「一」中的主鍵放在「多」中。此例中,外部鍵放在Employee表中。

    一對一在一對一關系中,外部鍵可以放進任一表中。如果必須要放在某一邊,而不能放在另一邊,應該放在必須的一邊。此例中,外部鍵(Head ID)在Department表中,因為這是必需的。

    多對多在多對多關系中,用兩個外部鍵來創建一個新表。已存的舊表通過這個新表來發生聯系。

    5.檢驗設計

    在你完成設計之前,你需要確保它滿足你的需要。檢查你在一開始時所定義的行為,確認你可以獲取行為所需要的所有數據:
    ● 你能找到一個路徑來等到你所需要的所有信息嗎?
    ● 設計是否滿足了你的需要?
    ● 所有需要的數據都可用嗎?
    如果你對以上的問題都回答是,你已經差不多完成設計了。

    最終設計
    最終設計看起來就像這樣:

    設計資料庫的表屬性
    資料庫設計需要確定有什麼表,每張表有什麼欄位。此節討論如何指定各欄位的屬性。

    對於每一欄位,你必須決定欄位名,數據類型及大小,是否允許NULL值,以及你是否希望資料庫限制欄位中所允許的值。

    選擇欄位名
    欄位名可以是字母、數字或符號的任意組合。然而,如果欄位名包括了字母、數字或下劃線、或並不以字母打頭,或者它是個關鍵字(詳見關鍵字表),那麼當使用欄位名稱時,必須用雙引號括起來。

    為欄位選擇數據類型
    SQL Anywhere支持的數據類型包括:
    整數(int, integer, smallint)
    小數(decimal, numeric)
    浮點數(float, double)
    字元型(char, varchar, long varchar)
    二進制數據類型(binary, long binary)
    日期/時間類型(date, time, timestamp)
    用戶自定義類型

    關於數據類型的內容,請參見「SQL Anywhere數據類型」一節。欄位的數據類型影響欄位的最大尺寸。例如,如果你指定SMALLINT,此欄位可以容納32,767的整數。INTEGER可以容納2,147,483,647的整數。對CHAR來講,欄位的最大值必須指定。

    長二進制的數據類型可用來在資料庫中保存例如圖像(如點陣圖)或者文字編輯文檔。這些類型的信息通常被稱為二進制大型對象,或者BLOBS。

    關於每一數據類型的完整描述,見「SQL Anywhere數據類型」。

⑦ 資料庫某欄位是帶1位的精確數字,則應選什麼浮點型的數據類型

bigint
巨整型,巨整型是八個位元組的整數,精度為 19 位。巨整型的范圍從 -9,223,372,036,854,775,808 到

9,223,372,036,854,775,807。

binary
二進制
bit
位元組
char
字元類型
detetime
時間類型
decimal
Decimal 數據類型 Decimal 變數存儲為 96 位(12 個位元組)無符號的整型形式,並除以一個 10 的冪數。

這個變比因子決定了小數點右面的數字位數,其范圍從 0 到 28。變比因子為 0(沒有小數位)的情形下,

最大的可能值為 +/-79,228,162,514,264,337,593,543,950,335。而在有 28 個小數位的情況下,最大值為

+/-7.9228162514264337593543950335,而最小的非零值為 +/-0.0000000000000000000000000001。
float
單精度類型
image
圖片類型
int
整形
money
貨幣類型
nchar
字元類型,根據 unicode 標准所進行的定義,用給定整數代碼返回 unicode 字元。
ntext
文本類型
numeric
decimal(numeric ) 同義,用於精確存儲數值
decimal 數據類型最多可存儲 38 個數字,所有數字都能夠放到小數點的右邊。decimal 數據類型存儲了一

個准確(精確)的數字表達法;不存儲值的近似值。

nvarchar
可變長度 (varchar) 字元數據類型。
real
float 和 real 數據
float 和 real 數據類型被稱為近似的數據類型。在近似數字數據類型方面,float 和 real 數據的使用遵

循 IEEE 754 標准。
smalldatetime
短日期類型
smallint
短整型
smallmoney
短貨幣型
sql_variant
一種數據類型,用於存儲 SQL Server 支持的各種數據類型(不包括 text、ntext、image、timestamp 和

sql_variant)的值。
text
文本
timestamp
http://tieba..com/f?kz=91062016這里有介紹
tinyint
tinyint 使用整數數據的精確數字數據類型,范圍 0 到 255,存儲 1 位元組

uniquedentifier
uniqueidentifier數據類型可存儲16位元組的二進制值,其作用與全局唯一標記符(GUID)一樣。GUID是唯一

的二進制數:世界上的任何兩台計算機都不會生成重復的GUID值。GUID主要用於在用於多個節點,多台計算

機的網路中,分配必須具有唯一性的標識符。 在SQL中 ROWGUIDCOL表示新列是行的全局唯一標識列。對於

每個表只能指派一個uniqueidentifier 列作為ROWGUIDCO列。ROWGUIDCOL屬性只能指派給uniqueidentifier


Uniqqueidentifier 是全局唯一的標識

varbinary
可變長度二進制數據。n 可以是從 1 到 8,000 之間的值。max 指示最大存儲大小為 2^31-1 位元組。存儲大

小為所輸入數據的實際長度 + 2 個位元組。所輸入數據的長度可以是 0 位元組。varbinary 的 ANSI SQL 同義

詞為 binary varying。

varchar
可變長度,非 Unicode 字元數據。n 的取值范圍為 1 至 8,000。max 指示最大存儲大小是 2^31-1 個位元組

。存儲大小是輸入數據的實際長度加 2 個位元組。所輸入數據的長度可以為 0 個字元。varchar 的 ISO 同

義詞為 char varying 或 character varying。

基本就是這樣吧。

⑧ Navicat for MySql怎麼設置double和float型的小數長度

設置方法:

1、安裝好Mysql後 下載navicat類似管理工具。

2、根據所需連接Mysql,新建資料庫、表,根據欄位設置長度。

3、完成後保存數據 具體操作圖片如下 最總得出結論有長度,小數點設置所以可以設置類型長度。