ディレクトリ
学生管理システムのデータベース設計
まず、特定のビジネスプロセス何である機能を現在のシステムに精通している必要があり、データベースを設計します
学生管理システムの特長
学校の学生管理システムは、次のようにコア機能があり、使用されています
- 学生情報管理(増加生徒、学生は、削除、変更、学生、生徒の情報を照会します==略称:CURD)
- 教師情報管理(CURD)
- コース情報管理システム(CURD)
- パフォーマンス管理情報システム(CURD)
- 懲戒情報管理(CURD)
- イベント情報管理(CURD)
- 用品/機器情報管理(CURD)
- などなど....
上記の特徴のすべてを達成するために、上記の目的に従って上記オブジェクト情報を操作するために必要な関連情報は、データベース内の固定された形式で格納することができる!
データベース設計の最初のステップは、コアビジネスに関連するオブジェクトを識別することであるオブジェクト/オブジェクトのクラス固定された情報は、テーブルに格納されています!
コンセプト
- オブジェクト:オブジェクトのクラスでの生活、オブジェクトと呼ばれるプログラム
- プロパティ:名詞と形容詞は、つまり、オブジェクトのプロパティをオブジェクトを記述します
データベースの設計手順
データベース設計3つのコアのステップ:
- 1.オブジェクトを探します
- 2.検索プロパティ
- 3.間の関係を見つけるために、
ステップ1:オブジェクトを探します
システムのコアビジネスオブジェクトの分析。
- 学生はオブジェクト---->テーブルの学生(学生)
- 先生オブジェクト---->教師テーブル(教師)
- 出席---->カリキュラム(コース)
- パフォーマンスオブジェクト---->結果テーブル(スコア)
- Objectクラス---->クラステーブル(ユーザまたはクラスなどの接頭辞_classは、番組キーワードのための英語の単語ので。直接的ではない試してみてください)
- ように.....
注:ビジネス未熟な、見つからなかったため、一部のオブジェクトが隠れていることがあり、生徒の前のデータベースの設計に、このようなアクティブなオブジェクトとして休暇オブジェクトの要求を書き込んだ.....そのため、システムの機能とビジネスプロセスの統合を行う必要がありますように、明らか。必要に応じて、もちろん、不足しているオブジェクトを補充することができる。データベース設計は一歩ではありません。
ステップ2:プロパティを探して
概念属性:「属性」と呼ばれる研究の名詞や形容詞説明したオブジェクト/オブジェクト,,行の各属性の対応表を!
- 学生は(学生)オブジェクト:一意のID、学生番号氏名、性別、年齢、生年月日、電話を特定し、
- オブジェクト教師(教師):一意IDを識別する、名前、性別、年齢、電話
- ターゲットオーディエンス(コース):固有の識別ID、コース名、開始時刻、時間数
- クラスオブジェクト(tbl_class):一意のIDを特定し、クラス番号の数
- 性能目標(スコア):ID、スコア、コース名(コースコードを直接引用符で囲むことができます)、生徒の名前(学生番号を直接参照することができます)
各オブジェクトの属性は、表の各列に対応
!学籍番号とデータの冗長性(繰り返し)を避けるために、代わりに名前やカリキュラムの
文字:記憶装置は厳密に異なる年齢の種類:!整数int型、名前を区別しています文字列、文字/ varchar型/文字列
ステップ3:関係を探して
テーブルとテーブルの間の関係を有する:1 --- N(1:1)(多くの1)またはN --- 1(複数の)または1-1またはN - N(多数)
- 1-1または1-NまたはN-1:主キーと外部キーによって示されます
- NN:多しかし、中間テーブル(表)の手段によって実施されるように見えます
- 商品や注文フォーム等はNであり、 - N
- 製品(ID、製品番号、名称、数量、価格)
- 注文(ID、注文番号、ユーザー名(ID)、総数の合計金額)
別中間テーブル/テーブル(テーブルA、他の二つの基準の主キー)
ID | PID(製品番号) | OID(注文番号) |
---|---|---|
1 | P001 | D001 |
2 | P002 | D001 |
3 | P003 | D001 |
4 | P001 | D002 |
5 | P001 | D003 |
6 | P002 | D002 |
#查 订单D001买的所有的商品!
select * from 表名 where oid='D001'
# 查 商品 P001被下单了多少次?
select * from 表名 where pid = 'P001'
# 看:D001 买了几个商品!
select sum(num) from guanxi_product_order
where oid='D001'
テーブルを構築するための原理
オブジェクトの分析の後、以下の表の時に建設を追跡するために、表のうち、一般的な原則を構築することができます。
表ルールを構築するには
- 1.オブジェクト情報の同じタイプは、テーブルに格納されています!
- 2.各オブジェクトの属性は、表の各列に対応します!
- 特定の列のデータ・タイプ3.
- int型:整数
- 小数:フロート/ doubeの
- 日付:date.datetime
- 文字列:文字/ varchar型
- 4.各テーブルには主キー列を持っている必要があります!
- (複数でもよい)カラムクロス主キー列上の行の間の唯一の違い
- ルール:仮想主キーID(インクリメント)を追加するために使用主キーを避けるないために、
- 5.制約(制限)を追加します。
- 主キー:主キー--->特徴:ユニーク
- インクリメント:AUTO_INCREMENT ---->自動成長
- デフォルト値:男性の性別にデフォルト----->デフォルト!
- 非ヌル:ヌル-------->データを持っている必要がありません
- ユニーク:ユニーク---->繰り返すことはできません
- 外部キー外部キー(参照):------>スコアテーブル記憶クラスID、コースID、
ステップ4:特殊なケース検索:明白なレベルの機密データ情報が含まれていませんが、時計を維持することが推奨されます
たとえば、次のように地域のテーブルとテーブルのスタッフ
番号(市外局番) | 名前 | コード | Pコード親番号 |
---|---|---|---|
1 | 北京 | 11 | |
2 | 山東省 | 37 | |
3 | 済南 | 3701 | 37 |
4 | 青島 | 3702 | 37 |
5 | 海淀 | 1101 | 11 |
6 | 房山 | 1102 | 11 |
-- 所有省
select * from area where pcode is null
-- 山东省所有的市
select code from area where name= '山东'
select * from area where pcode = 37
select * from area where pcode = (
select code from area where name= '山东'
)
3つのパラダイムのデータベース設計に従ってください
- 最初のパラダイム:アトミック
事業に基づいて、テーブルのすべての列を細分化することができないことを保証する必要があります例えば:シンプルなストレージ学生情報を使用するのに十分であるが、アドレスリストされている電気の供給業者のウェブサイトのアドレスは、省、市や郡に分割する必要があります。郷、村 - 第二のパラダイム:相関
主キー関連する各列と保証されているテーブル、限りオブジェクト情報のクラスは、テーブルに格納されているように、それは第二のパラダイムを満たします - 第三のパラダイム:に直接相関
複数の列は、一般的に、関節中間主キーとして使用され、他の列は、直接各コンポーネントに関連しなければならない、とだけでなく、1つの列の関係を有しています。
参考:https://www.cnblogs.com/knowledgesea/p/3667395.html
概要:データベースの設計は原則[フォーカス]を次の
前提:プロジェクトの業務プロセスに精通!
- テーブルに格納されたクラスオブジェクト情報
- 主キー列を有していなければならないテーブル(主キーを防止するためには、通常、インクリメントするように設定する仮想プライマリ・キー列ID、IDを追加するために使用されていません)
- データの整合性を確保するために制約を追加
- 主キー
- ユニーク
- インクリメント
- 非空
- 外部キー(1-Nを達成するために)
- デフォルト値
- 複数対の独立したテーブルである必要があります
- 注意:関連付けられたデータから、レベルをクリアしていない機密情報を達成することができます!
- コンプライアンス:データベース設計3つのパラダイム(3つの原則)