LoginSignup
1
2

More than 5 years have passed since last update.

始めに

最近SQLの勉強を始めてます。

正直なところSQLの楽しさがよくわからないですが必要なので勉強しなきゃですね…

とりあえずER図というものがあるらしくそれをERDPlusというソフトで作ってみる

ERDPlusは無料だしインストールとかもいらないので良い:sunny:

とりあえず

とりあえず

ここにアクセスしてアカウント作って右上のDiagramsを押したらER図の作成ページに移る。

そこで+Newボタンを押してファイルを作成。

下↓のボタンを押せば名前を編集したりできる。

作るもの

簡単なブログサイトのER図を作る。

とりあえずテーブルはusers,posts,categoriesを使うこととする

+Newを押したらER DiagramとかRelational Schemaとか出てくるがRelational Schemaを使う

erd.png

こんな感じになった。

これで個人的に戸惑ったのはpostsにuser_idとかを入れないこと

connectでつなぐと勝手に作ってくれるっポイ。

出来たもの

後で多対多のアソシエーションには中間テーブルが必要であることに気づきCategory_Post_Regという中間テーブルを作った

出来たものがこれ

erd2.png

これだと一対多なのか一対一なのか多対多なのかわからないけどたぶんこれはsqlのデータの作成に使うためのもの?だから良いのかな?

作ったものはExport SQLってのができて作成した図を元にSQLを書いてくれる

それがこれ


CREATE TABLE Users
(
  User_ID INT NOT NULL,
  name VARCHAR(30) NOT NULL,
  age INT NOT NULL,
  sex VARCHAR(10) NOT NULL,
  mail VARCHAR(100) NOT NULL,
  address VARCHAR(100) NOT NULL,
  PRIMARY KEY (User_ID),
  UNIQUE (mail)
);

CREATE TABLE Posts
(
  Post_ID INT NOT NULL,
  title VARCHAR(100) NOT NULL,
  body VARCHAR(1000) NOT NULL,
  User_ID INT NOT NULL,
  PRIMARY KEY (Post_ID),
  FOREIGN KEY (User_ID) REFERENCES Users(User_ID)
);

CREATE TABLE Categories
(
  Category_ID INT NOT NULL,
  cname VARCHAR(100) NOT NULL,
  PRIMARY KEY (Category_ID)
);

CREATE TABLE Category_Post_Reg
(
  RegID INT NOT NULL,
  Category_ID INT NOT NULL,
  Post_ID INT NOT NULL,
  PRIMARY KEY (RegID),
  FOREIGN KEY (Category_ID) REFERENCES Categories(Category_ID),
  FOREIGN KEY (Post_ID) REFERENCES Posts(Post_ID)
);

普通に書こうと思ったらかなり大変だけどこれならすぐ作れるしタイプミスもないから良い

でも結局Railsの場合rails g modelでテーブルを作るからあんま関係ないかな

アソシエーションに関して詳しく書きたい場合は+ NewでER Diagramを選択してER図を作る。

ER Diagram

さっきのをER Diagramで作るとこんな感じになる

erd3.png

一対多なのか多対多なのかわかるようになった。

これだとExport SQLができないけどRailsの場合いらないからこっちを使ったほうが良いのかも

終わりに

基本的に英語で書かれているので英語が超苦手な自分としてはよくわからないところが多い。

もっと機能あるだろうしなんかもっと設定できる感じだけどとりあえずはこれで良しとする:fist:

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2