質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

2回答

1029閲覧

カラム名が被ってしまう場合の解決策

babybaby

総合スコア40

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2021/12/13 09:01

RPGゲームを制作しており、テーブル設計の際のカラム名が被ってしまう際の解決策を教えていただきたいです。

既に運用中のシステムのDBに、主人公が持つ武器に属性付与が与えられているか管理するテーブルがあります。
もし値が1ならその属性が付与されていると判定するような仕様です。

カラム名:water 値:1
※水属性が付与されていると判定されるレコードです

上記のレコードは画面上では、「水」として表示されていました。
しかし、運用後のカスタマイズとして、「水」と表示していたものを「ウォーター」として表示するよう変更しました。
また、諸事情があり別カラムとして、「ウォーター」を追加しなければなりません。

その際にカラム名:waterが既に使用済みである為、別の名前を付けなければなりませんが、こういった場合、「water2」といった連番を付ける方法は一般的な解決方法でしょうか?

ご教示よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

もしかして、
・水属性としての強さ
・水属性への抵抗力
のどちらもwaterにしようとしているなら、考え方が間違っています。

water_strength と water_resistance などと一目瞭然なカラム名をつけることを強くおすすめします。

なお、テーブルが別であれば、ひとつのテーブル内でかぶらなければ、
強さテーブルのwaterと抵抗力テーブルのwaterとは別として扱えます。
が、同じwaterで意味が違うのは混乱のもとになるため、避けるべきだと思います。

長いカラム名をつけたくないのかもしれませんが、
クエリー作成するときは支援機能のあるエディタを使えば、
wとタイプするだけでwから始まるものを候補として表示したりできるので、
エディタも適切なものを選ぶと良いです。
(Windowsでしたら、A5:SQL Mk-2 - フリーのSQLクライアント/ER図作成ソフト (松原正和)をおすすめします。)

なお、設計段階で属性の種類が固定され、運用中に増減することがなければ、
固定の名称でいいと思うのですが、
増減したりするようであれば、
属性の管理は別テーブルに追い出す方法もありますね。

投稿2021/12/13 09:09

編集2021/12/13 09:15
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

babybaby

2021/12/13 09:38

現地点ではシステム上で使用される用途は同じです。 「ウォーター」を追加後は「水」は画面上から消えます。 ただし、画面上に「水」として表示されている時に登録されているデータはそのまま残こしたい かつ 画面上に「ウォーター」として表示されている状態で登録されたデータは「ウォーター」として保存したい感じです(言っている意味が良く分からないかもしれないですが、画面上の名称が違うと別用語として管理しておきたい旨です)。
guest

0

ベストアンサー

しかし、運用後のカスタマイズとして、「水」と表示していたものを「ウォーター」として表示するよう変更しました。

また、諸事情があり別カラムとして、「ウォーター」を追加しなければなりません。

2つの「ウォーター」の違いは何なのでしょうか。それに合わせて、適切な名前を与えられるようにも思えます。

投稿2021/12/13 09:07

maisumakun

総合スコア145208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

babybaby

2021/12/13 09:42

システム上ではどちらも属性:水として扱う為、違いはありません。 画面上に「水」として表示されていたデータと「ウォーター」として表示されたデータを分けたいがためにカラム名ごと変えようとしている感じです。
maisumakun

2021/12/13 09:56 編集

何のために分ける(古いデータを別に残す)必要があるのでしょうか? (古いデータをバックアップしておいて、water列を新しいデータに転用、のような手段も考えられます)
babybaby

2021/12/13 10:06

いまは「水」=「ウォーター」として扱っていますが、将来その定義が変わった場合、いつの地点からウォータが使われだしたのかを見つけやすいため、カラム名を分けようとしています。(データ登録を記録する履歴テーブルが別にあります)
maisumakun

2021/12/13 11:06 編集

そのような管理に列名を使う、というのが合理的でないようにも思えます。 文書なりソースコード管理なりで扱えばいいだけの話で、動作と関係ない工数管理のために列名を歪める、という方が不適当だと考えます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問