DB設計を語るスレ 9at DB
DB設計を語るスレ 9 - 暇つぶし2ch999:NAME IS NULL
17/05/19 11:22:53.49.net
>>980
普通に別クラスで実装
継承して良いのは、リスコフの置換原則に沿っている場合に限る

1000:NAME IS NULL
17/05/19 20:14:19.39.net
俺ならクラス1個だな・・・
一応ケースバイケースだけどそれくらいならnullでいいだろ

1001:NAME IS NULL
17/05/19 21:12:25.86.net
>>975だけからはリスコフの置換原則に適うかそうでないか判断できんだろう。

1002:NAME IS NULL
17/05/19 22:16:24.78.net
>>983
どこが沿ってないのか詳しく書けるよね?

1003:NAME IS NULL
17/05/19 22:39:04.45ES7yFGBt.net
>>984
「そのくらい」じゃなくて分かりやすいように例示しただけで実際はもっと複雑
リスコフの置換原則は大丈夫

1004:NAME IS NULL
17/05/19 23:11:32.87.net
>>987
> 実際はもっと複雑
だからケースバイケースって言われてるんだろ
どんだけ複雑かなんてお前にしかわからんのだし

1005:NAME IS NULL
17/05/19 23:47:37.47.net
>>975
私なら再帰構造にしますよ。

Oracleで確認

--テーブル作成
DROP TABLE TWEET;
DROP TABLE TWEET_REL;
CREATE TABLE TWEET
(ID NUMBER NOT NULL,
MSG VARCHAR2(100) NOT NULL
);
CREATE TABLE TWEET_REL
(ID NUMBER NOT NULL, --リツイートID
PID NUMBER NOT NULL --リツイート元のツイートID
);

1006:NAME IS NULL
17/05/21 21:50:51.26.net
クラス設計の良し悪しはスレ違いだしどうでもいいんだが
この手のやつはORM前提かどうかで変わると思うんだが

ORMごとに継承関係のあるクラスに対するテーブル設計のベストプラクティスとかないのか?

ORMを前提にテーブル設計を変えるのは本末転倒だって話もあるがな

1007:NAME IS NULL
17/05/22 10:38:01.44.net
>>985
> >>975だけからはリスコフの置換原則に適うかそうでないか判断できんだろう。
今回の"Twitter"が実存するTwitterなら、tweet != retweetなのは明らか
tweetに対するメソッドと、retweetに対するメソッドを、>>975のクラス構成でどこに実装すべきかを
考えれば、リスコフの置換原則に沿ってないのは明らか

1008:NAME IS NULL
17/05/22 10:41:17.07.net
>>986
> どこが沿ってないのか詳しく書けるよね?
逆にどこが沿ってるのか書いてみろ

1009:NAME IS NULL
17/05/22 11:22:50.04.net
クラスから考えるからおかしくなるんじゃね?
ふつうにこれじゃ駄目なん?
table tweet (id, user, tweet_date, tweet_text, ...その他のtweetの属性)
table retweet (user, retweet_date, tweet_id)

1010:NAME IS NULL
17/05/22 12:15:51.61.net
リスコフの置換原則か、勉強になるな、うん

1011:NAME IS NULL
17/05/22 13:24:07.22.net
リスコフの置換原則と書かれるとどんな原則なんじゃいと思うかもしれないが、要はis-a関係かどうかって話なだけ。
あと、OOのクラスの継承と、データベースのテーブル継承は別だから、ごっちゃにして話すのよくない。

1012:NAME IS NULL
17/05/22 13:34:39.41.net
>>989
これのどこが再帰構造なんだろうか・・・

1013:NAME IS NULL
17/05/22 15:36:17.62.net
>>993
これ以外考えられん

1014:NAME IS NULL
17/05/22 16:16:51.13.net
次スレヨロ

1015:NAME IS NULL
17/05/22 16:21:24.73.net
よろよろ

1016:NAME IS NULL
17/05/22 16:26:22.62.net
>>989
ORM脳

1017:1001
Over 1000Thread.net
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 586日 20時間 40分 11秒

1018:1002
Over 1000Thread.net
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


──────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
──────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
URLリンク(premium.2ch.net)

▼ 浪人ログインはこちら ▼
URLリンク(login.2ch.net)

1019:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch