Open Nlkomaru opened 2 months ago
2点気になったことがあります。
Affiliation Tableの学部学科情報はマスタテーブルで管理してidをINTで指定する方が管理しやすいかもしれません。
Usersのスキルの項目については、どういう活用するか次第ではありますが、仮に同じ分野に興味ある人を検索する機能を実装するみたいな時にこちらについてもマスタテーブルがあると良いかもしれません?
2点気になったことがあります。
1. Affiliation Tableの学部学科情報はマスタテーブルで管理してidをINTで指定する方が管理しやすいかもしれません。 2. Usersのスキルの項目については、どういう活用するか次第ではありますが、仮に同じ分野に興味ある人を検索する機能を実装するみたいな時にこちらについてもマスタテーブルがあると良いかもしれません?
1に関してはそちらの方が良いように感じるため、そのようにします。 2に関してはbioに取り込んで、削除します。
また、nameがnicknameなのかreal_nameなのかわからないため、nicknameにフィールド名を変更して、管理用にContactにfamily_name, last_name, middle_nameの属性を追加します。
Roleおよび学部学科情報をマスタテーブルに切り離し、また名前についてnicknameと本名の区別を明確化します。 また、こうしたほうがいいなどといった点があれば、あげていただけると嬉しいです。
Column | Data Type | Notes |
---|---|---|
user_id | VARCHAR | 主キー、ユーザーを一意に識別する |
nickname | VARCHAR | ユーザーのニックネーム |
Column | Data Type | Notes |
---|---|---|
user_id | VARCHAR | 主キー、Usersテーブルとの外部キー |
hashed_password | VARCHAR | ハッシュ化された認証用パスワード |
role_id | INT | Rolesテーブルとの外部キー |
Column | Data Type | Notes |
---|---|---|
role_id | INT | 主キー、役職を一意に識別するID |
role_name | VARCHAR | 役職名 |
Column | Data Type | Notes |
---|---|---|
user_id | VARCHAR | 主キー、Usersテーブルとの外部キー |
faculty_id | INT | Facultyテーブルとの外部キー |
grade | INT | 学年 |
Column | Data Type | Notes |
---|---|---|
faculty_id | INT | 主キー、学部を一意に識別するID |
faculty_name | VARCHAR | 学部名 |
department_name | VARCHAR | 学科名 |
Column | Data Type | Notes |
---|---|---|
user_id | VARCHAR | 主キー、Usersテーブルとの外部キー |
school_email | VARCHAR | 学校のメールアドレス |
sub_email | VARCHAR | サブのメールアドレス(Optional) |
discord_id | VARCHAR | DiscordのID(Optional) |
github_id | VARCHAR | GitHubのID(Optional) |
phone_number | VARCHAR | 電話番号 (Optional) |
Column | Data Type | Notes |
---|---|---|
user_id | VARCHAR | 主キー、Usersテーブルとの外部キー |
first_name | VARCHAR | 名前 |
last_name | VARCHAR | 苗字 |
middle_name | VARCHAR | ミドルネーム(Optional) |
Column | Data Type | Notes |
---|---|---|
user_id | VARCHAR | 主キー、Usersテーブルとの外部キー |
profile_image | VARCHAR | プロフィール画像のurl (オブジェクトストレージに保存) (Optional) |
bio | TEXT | 簡単な自己紹介文 (Optional) |
Column | Data Type | Notes |
---|---|---|
activity_id | INT | 主キー、活動を一意に識別するID |
user_id | VARCHAR | Usersテーブルとの外部キー |
activity_date | DATE | 活動日 |
activity_description | TEXT | 活動の詳細 (大会出場等) |
erDiagram
USERS {
VARCHAR user_id PK
VARCHAR nickname
}
AUTH {
VARCHAR user_id PK, FK
VARCHAR hashed_password
INT role_id FK
}
ROLES {
INT role_id PK
VARCHAR role_name
}
AFFILIATION {
VARCHAR user_id PK, FK
INT faculty_id FK
INT grade
}
FACULTY {
INT faculty_id PK
VARCHAR faculty_name
VARCHAR department_name
}
CONTACT {
VARCHAR user_id PK, FK
VARCHAR school_email
VARCHAR sub_email
VARCHAR discord_id
VARCHAR github_id
VARCHAR phone_number
}
NAME {
VARCHAR user_id PK, FK
VARCHAR first_name
VARCHAR last_name
VARCHAR middle_name
}
PROFILES {
VARCHAR user_id PK, FK
VARCHAR profile_image
TEXT bio
}
ACTIVITY_LOG {
INT activity_id PK
VARCHAR user_id FK
DATE activity_date
TEXT activity_description
}
USERS ||--o{ AUTH : has
USERS ||--o{ AFFILIATION : has
USERS ||--o{ CONTACT : has
USERS ||--o{ NAME : has
USERS ||--o{ PROFILES : has
USERS ||--o{ ACTIVITY_LOG : logs
AUTH }o--|| ROLES : has
AFFILIATION }o--|| FACULTY : belongs_to
member-portalに必要で、データベースに保管する必要のある情報をとりあえず挙げます。ほかに何かあったら、挙げてもらえると嬉しいです。
データベース設計
1. Users テーブル
2. Affiliation テーブル(所属情報)
3. Contact テーブル(連絡情報)
4. Profiles テーブル(プロフィール情報)
5. Activity_Log テーブル(活動履歴)