0

従業員のスケジューリング用のデータベースを作成しています。すべてのデータを効率的に管理できるように、初めてリレーショナル mySQL データベースを作成しています。私は mySQL Workbench プログラムを使用して、これがどのように進むかを視覚化しています。これが私がこれまでに持っているものです:

モックアップ

私が頭の中で描いたのは、図面に基づいて、schedule示されているように他のテーブルからの参照を使用してテーブルにスケジュールを設定するということです。次に、このスケジュールを表示する必要がある場合は、scheduleテーブルからすべてを取得します。過去にデータベースを扱ったときはいつでも、それは正規化されたタイプではなかったので、データを 1 つのテーブルに入力し、その 1 つのテーブルからデータを引き出すだけでした。はるかに大きなプロジェクトに取り組んでいるので、すべてのテーブルをこのように分割 (正規化) するのが正しい方法だと確信していますが、最終的にすべてがどのようにまとめられるかがわかりません。@grossvogelは、これをすべて機能させるために重要であると私が信じていることを指摘しました。joinデータをプルする関数。

私がリレーショナル データベースから始めた理由は、(たとえば)shiftテーブルに変更を加えた場合、レコード 1 を "AM" ではなく "Morning" にしたかった場合、関連するセクションが次のように自動的に変更されるためです。cascadeオプション。

これをここに投稿する理由は、誰かが空白を埋めて正しい方向に向けてくれることを望んでいるからです。そうすれば、最初に間違った方向に曲がったことを見つけるためだけに多くの時間を費やすことはありません。 .

4

2 に答える 2

3

おそらく、あなたが見逃しているのは、クエリを使用してjoins複数のテーブルからデータを取得するというアイデアです。たとえば(いくつかのテーブルを組み込むだけです):

SELECT Dept_Name, Emp_Name, Stat_Name ...
FROM schedule
INNER JOIN departments on schedule.Dept_ID = departments.Dept_ID
INNER JOIN employees on schedule.Emp_ID = employees.Emp_ID
INNER JOIN status on schedule.Stat_ID = status.Stat_ID
...
where ....

a schedule table that contains all of the information needed to be displayed on the final pageまた、リレーショナル データ モデリングの精神に沿っていないことにも注意してください。各テーブルでアプリケーション内のエンティティをモデル化する必要があるため、各行がシフトを表すscheduleような名前に変更する方が適切な場合があります。shifts(私は通常テーブルに単数形の名前を使用しますが、そこには複数のパースペクティブがあります。)

于 2012-11-15T03:39:14.403 に答える