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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

4回答

2522閲覧

DBの一意項目と命名規約について

enigumalu

総合スコア192

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2017/03/10 00:27

2つの異なるDB(mysqlとoracle)にキーとして同じカラムを設け同じ値を入れる必要が
あるのですがデータ上明確にプライマリーになる値がなく、タイムスタンプ(ミリ秒)を取得して
これをプライマリキーにしようと考えています。
この時、タイムスタンプ(ミリ秒)に良いカラム名はありませんでしょうか。いまはtimestamp_xx、xx_timestampみたいな感じを考えていますがいまいちな気がしています。
またそもそもなのですが、複数のテーブルやDBにデータを挿入する際に明確に一意になるような
項目がない場合何をプライマリキーとしておくことが望ましいのでしょうか

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

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

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

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

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

guest

回答4

0

ベストアンサー

プライマリーキーになるならデータを一意に確定するためのカラムなので
idもしくはtimeidなどで十分では?

投稿2017/03/10 00:54

yambejp

総合スコア114839

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

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

enigumalu

2017/03/10 02:48 編集

たしかにxx_idとかが望ましいのかなと思います。 結局インサートした時間なのでreg_time_idとかreg_timestamp_idは変でしょうか? やはりtimestampと名前につくのは微妙ですかね
yambejp

2017/03/10 02:53

タイムスタンプはミリ秒単位ではないので命名に「timestamp」を含むと むしろ仕様をわかりづらくするかもしれません もちろん気にしないなら問題ないと思いますが・・・
guest

0

この時、タイムスタンプ(ミリ秒)に良いカラム名はありませんでしょうか。

汎用的なものであれば

  • insert_timestamp
  • ins_time

といった感じになりますが、可能であれば提供するサービスで使用される言葉に合わせた方がよいです。(「登録日時」であればregistration_time等)

またそもそもなのですが、複数のテーブルやDBにデータを挿入する際に明確に一意になるような

項目がない場合何をプライマリキーとしておくことが望ましいのでしょうか

連番(SEQUENCEやIDENTITYカラムで実装)、タイムスタンプ、UUID等でしょうか。タイムスタンプの場合は衝突することがあるので、再取得または連番を付加するといった考慮が必要です。

投稿2017/03/10 00:53

SVC34

総合スコア1149

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

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

enigumalu

2017/03/10 02:51

サービスに合わせるとregかreceptです。 自分で命名して思ったのがカラム名にtimestampってつくのはどうなのでしょうか? 今思いついたのがtimestamp+threadとかにしちゃおうかなと思っているので なおのこと意味有りな名前が付けにくいなと
SVC34

2017/03/12 02:08

カラム名にtimestampという単語が使われることはよくあります。 しかし、構築中のサービスやシステムでそれを使うと意味が分かりにくくなる、違和感があるとあなたが感じるのであれば、使わない(連番等を使用する)方がよいでしょう。
guest

0

二つの DB に書くといっても、どちらかがメインであるはずですよね(どちらが先に決まるか、でもいいですが)。
であれば、メイン側の DB でシーケンスを使って PK を作り、サブ側には PK も含めてデータを渡しますかね(サブ側にはシーケンスを作らない)。
でないと、メインとサブが同一のシーケンス番号であることを保証しきれませんから。

投稿2017/03/10 00:47

tacsheaven

総合スコア13703

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

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

0

ORACLEならSEQUENCE を作るか、
もしくは他のカラムとの複合キーを主キーにするとかですかね。

投稿2017/03/10 00:39

jm1156

総合スコア866

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問