當前位置:首頁 » 操作系統 » 資料庫系統設計

資料庫系統設計

發布時間: 2022-02-01 00:07:09

① 設計一個資料庫系統要怎麼設計

資料庫系統只有一種語言,這種語言叫sql.
你可以使用PowerDesigner來進行資料庫PDM和CDM設計,支持當前各種主流的資料庫數據格式.

② 資料庫的系統設計包括哪些內容

資料庫設計包括六個主要步驟: 1、需求分析:了解用戶的數據需求、處理需求、安全性及完整性要求; 2、概念設計:通過數據抽象,設計系統概念模型,一般為E-R模型; 3、邏輯結構設計:設計系統的模式和外模式,對於關系模型主要是基本表和視圖; 4、物理結構設計:設計數據的存儲結構和存取方法,如索引的設計; 5、系統實施:組織數據入庫、編制應用程序、試運行; 6、運行維護:系統投入運行,長期的維護工作。

③ 資料庫如何設計

資料庫設計的基本步驟

按照規范設計的方法,考慮資料庫及其應用系統開發全過程,將資料庫設計分為以下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、需求分析階段

准確理解和分析用戶需求(包括數據和處理),它是整個設計過程的基礎,也是最困難、最耗時的一步。

2、概念結構設計階段

是整個資料庫設計的關鍵,通過對用戶需求的集成、歸納和抽象,形成了一個獨立於特定資料庫管理系統的概念模型。

3、邏輯結構設計階段

將概念結構轉換為DBMS支持的數據模型,對其進行優化。

4、資料庫物理設計階段

為邏輯數據模型選擇最適合應用程序環境的物理結構(包括存儲結構和存取方法)。

5、資料庫實現階段

根據邏輯設計和物理設計的結果,使用資料庫管理系統提供的數據語言、工具和主機語言,建立資料庫,編寫調試應用程序,組織數據倉庫,並進行試運行。

6、資料庫運行維護階段

資料庫應用系統經試運行後可投入正式運行,在資料庫系統運行過程中,需要不斷地對其進行評估、調整和修改。

註:在設計過程中,將資料庫的設計與資料庫中數據處理的設計緊密結合起來,在每個階段同時對這兩個方面的要求進行分析、抽象、設計和實現,相互借鑒和補充,從而完善這兩個方面的設計。

(4)資料庫系統設計擴展閱讀:

資料庫設計技術

1、清晰的用戶需求:作為計算機軟體開發的重要基礎,資料庫設計直接反映了用戶的需求。資料庫必須與用戶緊密溝通,緊密結合用戶需求。在定義了用戶開發需求之後,設計人員還需要反映具體的業務關系和流程。

2、注意數據維護:設計面積過大、數據過於復雜是資料庫設計中常見的問題,設計人員應注意數據維護。

3、增加命名規范化:命名資料庫程序和文件非常重要,不僅要避免重復的名稱,還要確保數據處於平衡狀態。為了降低檢索信息和資源的復雜度和難度,設計人員應了解資料庫程序與文件之間的關系,並靈活使用大小寫字母命名。

4、充分考慮資料庫的優化和效率:考慮到資料庫的優化和效率,設計人員需要對不同表的存儲數據採用不同的設計方法。在設計中,還應該使用最少的表和最弱的關系來實現海量數據的存儲。

5、不斷調整數據之間的關系:不斷調整和簡化數據之間的關系,可以有效減少設計與數據之間的聯系,進而為維護數據之間的平衡和提高數據讀取效率提供保障。

6、合理使用索引:資料庫索引通常分為聚集索引和非聚集索引,這樣可以提高數據搜索的效率。

參考資料來源:網路-資料庫設計

⑤ 資料庫系統設計要做那些工作

呵呵,對JSP你最好要了解.因為你們要合作.
其實做資料庫系統,要做一個資料庫的類,其中包含了前台需要的對資料庫操作的方法.前台調用這個類中的方法就行拉 .

資料庫系統設計可不是像你說的那麼簡單.要考慮很多問題,資料庫的完整性,安全性等,關系表的處理,事務等等.

⑥ 資料庫系統設計實例

資料庫就是信息的集合,分為:非關系資料庫、和關系資料庫(relational)。 學過沒要是沒有的話很難跟你說清怎麼弄。

⑦ 如何設計一個完整的資料庫系統

資料庫系統(database
system),是由資料庫及其管理軟體組成的系統。
一個完整的資料庫系統包括
1
計算機硬體
計算機硬體是資料庫系統的物質基礎,是存儲資料庫及運行資料庫管理系統的硬體資源,主要包括主機、存儲設備、輸入輸出設備以及計算一個完整的資料庫系統包括哪些部分?

⑧ SQL小型資料庫系統設計

--------------創建資料庫--------------------------
create database bankDB
on primary
(
name = 'bankDB',
filename = 'e:\bank\bankDB.mdf',
size = 3MB,
maxsize = 100MB,
filegrowth = 15%
)
log on
(
name = 'bankDB_log',
filename = 'e:\bank\bankDB_log.ldf',
size = 2MB,
filegrowth = 1MB
)
go
--------------------創建數據表---------------------
use bankDB
gocreate table userInfo
(
customerID int identity(1,1) not null,
customerName varchar(10) not null,
PID char(18) not null,
telphone char(13) not null,
adress varchar(100)
)alter table userInfo
add constraint PK_customerID primary key(customerID)
alter table userInfo
add constraint CK_PID check(PID like '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or
PID like '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]X' or
PID like '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
alter table userInfo
add constraint CK_telphone check(telphone like '13[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or telphone like '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
alter table userInfo
add constraint DF_telphone default('地址不詳') for adress
alter table userInfo
add constraint UQ_PID unique(PID)create table cardInfo
(
cardID char(19) not null,
curType varchar(5) not null,
savingType varchar(6) not null,
openDate datetime not null,
openMoney money not null,
balance money not null,
pass char(6) not null,
IsReportLoss char(2) not null,
customerID int not null
)alter table cardInfo
add constraint FK_customerID foreign key(customerID) references userInfo(customerID)
alter table cardInfo
add constraint PK_cardID primary key(cardID)
alter table cardInfo
add constraint DF_openDate default(getdate()) for openDate
alter table cardInfo
add constraint DF_pass default('888888') for pass
alter table cardInfo
add constraint DF_curType default('RMB') for curType
alter table cardInfo
add constraint CK_openMoney check(openMoney > 1)
alter table cardInfo
add constraint CK_balance check(balance > 1)
alter table cardInfo
add constraint CK_pass check(pass like '[0-9][0-9][0-9][0-9][0-9][0-9]')
alter table cardInfo
add constraint DF_cardID default('1010 3576 ' + convert(varchar(4),convert(int,rand()*10000)) + ' ' +convert(varchar(4),convert(int,rand()*10000))) for cardID
alter table cardInfo
add constraint DF_IsReportLoss default('否') for IsReportLoss
alter table cardInfo
add constraint CK_IsReportLoss check(IsReportLoss like '是' or IsReportLoss like '否')
alter table cardInfo
add constraint CK_savingType check(savingType like '定期' or savingType like '活期' or savingType like '定活期')create table transInfo
(
transDate datetime not null,
cardID char(19) not null,
transType char(4) not null,
transMoney money not null,
remark varchar(100)
)alter table transInfo
add constraint DF_transDate default(getdate()) for transDate
alter table transInfo
add constraint FK_cardID foreign key(cardID) references cardInfo(cardID)
alter table transInfo
add constraint CK_stransType check(transType like '存入' or transType like '支取')
alter table transInfo
add constraint CK_transMoney check(transMoney > 0)go
--------------------創建開戶用戶卡信息視圖---------
create view v_cus
as
select customerName, cardID,curType,savingType,telphone,adress
from cardInfo inner join userInfo on cardInfo.customerID = userInfo.customerID
where datediff(wk,openDate,getdate()) = 0-----------------------修改密碼--------------------
create proc changePWD
@cardID char(19),
@newpwd char(6),
@oldpwd char(6) = '888888'
as
declare @temppwd int
if((select count(*) from cardInfo where cardID = @cardID) = 0)
begin
print '您輸入的卡號不存在!'
return
end
select @temppwd = pass from cardInfo where cardID = @cardID
if(@temppwd = @oldpwd)
begin
update cardInfo set pass = @newpwd where cardID = @cardID
if(@@error = 0)
print '密碼修改成功!'
else
print '密碼修改失敗!'
end
else
print '您輸入的原始密碼不對,不能修改密碼!'----------------------銀行卡掛失-------------------
create proc ReportLoss
@cardID char(19),
@PID char(18)
as
if((select count(*) from cardInfo where cardID = @cardID) = 0)
begin
print '您輸入的卡號不存在!'
return
end
if((select IsReportLoss from cardInfo where cardID = @cardID) = '是')
begin
print '該卡已掛失!'
return
end
if((select PID from userInfo where customerID = (select customerID from cardInfo where cardID = @cardID)) = @PID)
begin
update cardInfo set IsReportLoss = '是' where cardID = @cardID
if(@@error = 0)
print '掛失成功!'
else
print '掛失失敗!'
end
else
begin
print '您輸入的身份證錯誤!不能掛失!'
return
end----------------------取消銀行卡掛失-------------------
create proc CancelReportLoss
@cardID char(19),
@PID char(18)
as
if((select count(*) from cardInfo where cardID = @cardID) = 0)
begin
print '您輸入的卡號不存在!'
return
end
if((select IsReportLoss from cardInfo where cardID = @cardID) = '否')
begin
print '該卡沒有掛失!不能進行此項操作!'
return
end
if((select PID from userInfo where customerID = (select customerID from cardInfo where cardID = @cardID)) = @PID)
begin
update cardInfo set IsReportLoss = '否' where cardID = @cardID
if(@@error = 0)
print '取消掛失成功!'
else
print '取消掛失失敗!'
end
else
begin
print '您輸入的身份證錯誤!不能取消掛失!'
return
end----------------------統計銀行的資金流通余額和盈利結算--------------------create proc StatMoney
as
select ((select sum(transMoney) as 資金流通余額 from transInfo where transType like '存入') - (select sum(transMoney) as 資金流通余額 from transInfo where transType like '支取'))
as 資金流通余額 select ((select sum(transMoney) as 資金流通余額 from transInfo where transType like '存入')*0.008
- (select sum(transMoney) as 資金流通余額 from transInfo where transType like '支取')*0.003)
as 盈利結算 ---------------------查詢本周開戶的卡號,顯示該卡的信息-------------------
create proc SearchNewCus
as
print '本周開戶卡號信息'
select * from v_cus -----------------------查詢本月交易金額最高的卡號-------------------------
create proc SearchHigh
as
select top 1 cardID, sum(transMoney) as 交易金額 from transInfo
group by cardID------------------------------查詢掛失帳號的客戶信息----------------------
create proc SearchLossCus
as
print '掛失帳號客戶信息'
select * from userInfo where customerID = (select customerID from cardInfo where IsReportLoss = '是')--------------------------催款提醒業務------------------------------------
create proc Awoke
as
select telphone, balance, customerName, cardID
from cardInfo inner join userInfo on cardInfo.customerID = userInfo.customerID
where balance < 200-------------------------銀行開戶-----------------------------------------
create proc OpenUser
@curType varchar(5),
@savingType varchar(6),
@openMoney money,
@PID char(18),
@telphone char(13),
@customerName varchar(10)
as
begin tran OpenU
declare @tag int
declare @tempID varchar(10)
set @tag = 0 insert into userInfo (customerName,PID,telphone) values (@customerName, @PID, @telphone)
set @tag = @tag + @@error
if(@tag = 0)
set @tempID = (select customerID from userInfo where PID = @PID)
insert into cardInfo (curType, savingType, openMoney, balance, customerID) values (@curType, @savingType, @openMoney, @openMoney, @tempID)
set @tag = @tag + @@error
if(@tag = 0)
begin
print '開戶成功!'
commit tran
end
else
begin
print '開戶失敗!'
rollback tran
end-----------------------------客戶存款-------------------------------------
create proc SaveMoney
@cardID char(19),
@transMoney money,
@transType char(4) = '存入'
as
if((select IsReportLoss from cardInfo where cardID = @cardID) = '是')
begin
print '該卡已掛失!無法對其進行操作!'
return
end
begin tran Saving
declare @tag int
set @tag = 0 insert into transInfo (cardID, transType, transMoney) values (@cardID, @transType, @transMoney)
set @tag = @tag + @@error
update cardInfo set balance = balance + @transMoney where cardID = @cardID
set @tag = @tag + @@error
if(@tag = 0)
begin
print '存款成功!'
commit tran
end
else
begin
print '存款失敗!'
rollback tran
end ------------------------------客戶取款------------------------------------
create proc DrawMoney
@cardID char(19),
@transMoney money,
@transType char(4) = '支取'
as
if((select IsReportLoss from cardInfo where cardID = @cardID) = '是')
begin
print '該卡已掛失!無法對其進行操作!'
return
end
begin tran Drawing
declare @tag int
set @tag = 0 insert into transInfo (cardID, transType, transMoney) values (@cardID, @transType, @transMoney)
set @tag = @tag + @@error
update cardInfo set balance = balance - @transMoney where cardID = @cardID
set @tag = @tag + @@error
if(@tag = 0)
begin
print '取款成功!'
commit tran
end
else
begin
print '取款失敗!'
rollback tran
end----------------------------轉帳------------------------------------------
create proc Transfer
@cardID_out char(19),
@cardID_in char(19),
@tranMoney money
as
if((select count(*) from cardInfo where cardID = @cardID_out or cardID = @cardID_in) <> 2)
begin
print '請確認兩張卡是否都存在!'
return
end
if((select IsReportLoss from cardInfo where cardID = @cardID_out) = '是')
begin
print @cardID_out + '該卡已掛失!無法對其進行操作!'
return
end
if((select IsReportLoss from cardInfo where cardID = @cardID_in) = '是')
begin
print @cardID_in + '該卡已掛失!無法對其進行操作!'
return
end
begin tran TransMoney
declare @tag int
set @tag = 0 update cardInfo set balance = balance - @tranMoney where cardID = @cardID_out
set @tag = @tag + @@error
update cardInfo set balance = balance + @tranMoney where cardID = @cardID_in
set @tag = @tag + @@error
if(@tag = 0)
begin
print '轉帳成功!'
commit tran
end
else
begin
print '轉帳失敗!'
rollback tran
end

⑨ 簡述資料庫應用系統的設計步驟

資料庫設計的基本步驟:

1、系統需求分析與設計。

2、概念結構分析與設計。

3、邏輯結構分析與設計。

4、物理結構分析與設計。

5、系統實施。

6、系統維護。

(9)資料庫系統設計擴展閱讀:

資料庫設計技巧:

1、原始文件與實體的關系

它可以是一對一,一對多,多對多的關系。一般來說,它們是一對一的關系:一個原始文檔只對應於一個實體。在特殊情況下,它們可以是一對多或多對一關系,即一個原始文檔對應於多個實體,或者多個原始文檔對應於一個實體。

這里的實體可以理解為基本表。在對應關系明確後,對輸入介面的設計非常有利。

2、主鍵和外鍵

一般來說,實體不能既沒有主鍵也沒有外鍵。在E-R圖中,葉中的實體可以定義主鍵或不定義主鍵(因為它沒有子代),但它必須有外鍵(因為它有父項)。

主鍵和外鍵的設計在全局資料庫的設計中起著重要的作用。當全球資料庫的設計完成後,一位美國資料庫設計專家說:「鑰匙無處不在,只有鑰匙。」。這是他資料庫設計的經驗,也體現了他對信息系統核心(數據模型)高度抽象的理念。

因為:主鍵是一個高度抽象的實體。主鍵和外鍵的配對表示實體之間的連接。

3、基本表的屬性

基本表不同於中間表和臨時表,因為它具有以下四個特點:

原子性。基本表中的欄位不可分解。

原始主義。基本表中的記錄是原始數據(基本數據)的記錄。

演繹的。所有輸出數據都可以從基本表和代碼表中的數據導出。

穩定。基本表的結構比較穩定,表中的記錄要長期保存。

在了解基本表的性質之後,在設計資料庫時,可以將基本表與中間表和臨時表區分開來。

⑩ 資料庫設計的基本步驟

資料庫設計的基本步驟如下:

1、安裝並打開MySQL WorkBench軟體以後,在軟體的左側邊欄有三個選項,分別是對應「連接資料庫」、「設計資料庫」、「遷移資料庫」的功能。這類選擇第二項,設計資料庫,點擊右邊的「+」號,創建models。

熱點內容
刪資料庫事件 發布:2024-11-15 12:10:54 瀏覽:455
資料庫選課管理系統 發布:2024-11-15 12:10:15 瀏覽:126
android音樂波形圖 發布:2024-11-15 11:57:12 瀏覽:378
福建社保銀行卡初始密碼是多少 發布:2024-11-15 11:47:40 瀏覽:911
游戲多開用什麼配置 發布:2024-11-15 11:46:51 瀏覽:729
管理java版本 發布:2024-11-15 11:44:03 瀏覽:629
ndk編譯的程序如何執行 發布:2024-11-15 11:43:18 瀏覽:626
輕應用伺服器適合搭建網站嗎 發布:2024-11-15 11:36:08 瀏覽:246
c語言的百分號 發布:2024-11-15 11:34:24 瀏覽:31
一加五安卓8什麼時候推送 發布:2024-11-15 11:19:40 瀏覽:854