前提・実現したいこと
テーブル設計について悩んでいることがあり、ご相談に乗って頂きたく思います。
宜しくお願い致します。
現状のテーブル
以下は各社ページのアドレスが保存されたテーブルです。
「url」は他社ページを、「path」は自社ページを意味し、ご覧のように形式が異なるために異なるカラムとしています。
つまり1,4が自社ページで、2,3,5が他社ページです。
|id|url|path|brand|type|contents|
|:--:|:--|:--|:--|
|1|NULL|/page/1|our|hotel|aaa|
|2|http://examle.com/red|NULL|starbucks|cafe|bbb|
|3|http://examle.net/green|NULL|harrods|hotel|ccc|
|4|NULL|/page/2|our|department|ddd|
|5|http://examle.shop/red|NULL|harrods|cafe|eee|
※「id」「url」「path」はユニークで、他は重複しえます。
###悩んでいること
悩んでいるのは、
・このままインデックスを「url」と「path」の2つに貼る
・「url」も「path」も同じカラム「mix」とまとめて、インデックスは「mix」だけに貼る
という方針のいずれにするか(または他?)ということです。
一般的に「形式が異なるデータはカラムを分けるべき」という観点からいえばこのまま前者にすべきですが、「インデックスは少ない方がいい」という観点からいえば後者にすべきというジレンマに陥り、いずれにすべきか決め手となる根拠がひねり出せません。
このようなとき、前者か後者か(または他?)、みなさまならどのようにしますか?
###目的を追記します
目的は「contents」を取得することです。
そのために「brand」が必ずPOSTされ、あとは「url」か「path」のどちらかがPOSTされるので、POSTされた2つの値をレコード走査に使って「contents」を取得するのが現状です。
なので現状のままならインデックスを「url」と「path」に貼るという方針になるでしょうし、それとも「mix」とまとめる方針が良いのか、と悩んでいます。