バージョン選択

フォーラム

メニュー

オンライン状況

46 人のユーザが現在オンラインです。 (41 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 46
もっと...

サイト内検索

質問 > 管理機能 > データベースの階層

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
miho
投稿日時: 2008/8/6 13:13
対応状況: −−−
半人前
登録日: 2008/7/31
居住地:
投稿: 13
データベースの階層
教えてください。

やりたいこととしましては、1つのデータベースを使ってその中にeccubeを2つくらい入れたいんです。

イメージとしては、データベース名「shop」内のスキーマ(テーブル?)に、
「shop1」「shop2」を作ってそれぞれのスキーマにeccubeを入れて動かす感じです。

でもeccubeをインストールする際のデータベースの設定では、データベース名を入れるだけで、その下の階層までは設定出来ないように思えるのですが・・・。

どうかご教授お願いします。


開発環境
core-server

Apache1.3.37
Perl5.8.8
PHP5.2.5
RUBY1.8.5
MySQL5.1.20
PostgreSQL8.2.4
Python2.4.3
SQLite33.3.7
SQLite2.8.17
seasoft
投稿日時: 2008/8/6 22:03
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7365
Re: データベースの階層
スキーマとログインロールを同一名称にしたらどうだろう?


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

mirei
投稿日時: 2008/8/7 15:10
対応状況: −−−
半人前
登録日: 2008/6/18
居住地:
投稿: 12
Re: データベースの階層
同じデーターベースに別のテーブル名を作成するイメージだよね?
seasoft
投稿日時: 2008/8/7 21:04
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7365
Re: データベースの階層
微妙に違うかも。

【変更前】
shop.dtb_xxx (実態は shop.public.dtb_xxx)

【変更後】
shop.shop1.dtb_xxx
shop.shop2.dtb_xxx

こんな感じだと思う。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

miho
投稿日時: 2008/8/8 9:49
対応状況: −−−
半人前
登録日: 2008/7/31
居住地:
投稿: 13
Re: データベースの階層
ご回答をして頂いたみなさん、ありがとうございますm(_ _)m
あつがましくてすいません、さらに追加して質問させてください。


seasoftさんのおっしゃる通り、イメージはそのような感じです。
shop.shop1.dtb_xxx
shop.shop2.dtb_xxx

しかし、インストール時のデータベースの設定では、
「DB名」「DBパスワード」「DBユーザ」の3点しかなく、
DB名の先のテーブル名までは指定できないので、ソースファイルをいじるしかないのでしょうか?

といっても、ソースをいじる技術はないのですが・・・。
ramrun
投稿日時: 2008/8/8 12:54
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: データベースの階層
そもそもなんで1つのDBに2つのEC-CUBEを入れたいの?
CORE-SERVERならDBの作成は無制限でしょ?

あとMySQLにスキーマってありましたっけ?

XOOPSでは XOOPS_ がテーブル名の接頭辞としてインストール時に任意設定できるようになっていたと思うけど、そういう話?

↓がいまのEC-CUBEでどうなっているのかわかりませんが、ソースをいじるしかないのは確実ですよ。

XOOPSと共存させたいのですが
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=709&forum=2
seasoft
投稿日時: 2008/8/8 20:42
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7365
Re: データベースの階層
引用:

しかし、インストール時のデータベースの設定では、
「DB名」「DBパスワード」「DBユーザ」の3点しかなく、
DB名の先のテーブル名までは指定できないので、ソースファイルをいじるしかないのでしょうか?


PostgreSQL では、初期は
DBユーザ = スキーマ
だと、どこかで読みましたけど。(未確認)

MySQL なのですか?
なら、分かりません。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

homan
投稿日時: 2008/8/9 13:43
対応状況: −−−
仙人
登録日: 2007/7/2
居住地: 宮崎県宮崎市
投稿: 633
Re: データベースの階層
僕は最近EC-CUBE2系を触るようになって、はじめて本格的にPostgreSQLに触れたので詳細は調べなければならないですが、PostgreSQLの初期スキーマはpublicです。
特にスキーマ名を指定しなければpublicだと暗黙の了解?で指定されますね。

http://www.postgresql.jp/document/pg833doc/html/ddl-schemas.html

以前、モールのようなものをEC-CUBEで組もうと思った時に、同じDBでありながらスキーマをわけてなんとかできないかなぁと思った事がありました。スキーマの仕組みはまだよくわかっていませんので実現可能かどうかもわかりませんが、同じDB内ならスキーマの枠を超えて集計とかできるかな?とおもったからです。

そうなれば顧客情報などをpublicのスキーマ内テーブルに、他の商品情報だとかはそれぞれのスキーマ内テーブルで保持って感じにできておもしろそうですよね

なんにせよ、今のままであればPostgreSQLならばpublicスキーマ内にインストールされますから、ramrunさんがおっしゃるようにインストール部分やデータを読み込んでくる部分でスキーマを選択させるような改造が必要になるかと思います。

MySQLはおそらくスキーマはないとおもうので、これもramrunさんがおっしゃるように接頭辞や接尾辞をつけて別テーブル名としてインストールさせるようにするしかないですよね。

-----------------

もしくは、同じデータベースを利用する場合、店番号みたいなものをそれぞれのテーブルのカラムに追加して記録できるようにすれば、同じデータベースを見ながら、表向きにはそれぞれの店舗の商品を表示することも可能かもしれません。


どれを取るにしてもEC-CUBEを深く理解しておく必要がありますね。


----------------
このコミュニティでの投稿はボランティアの範囲に留めさせていただいています。個別の相談やカスタマイズは有償にて承っておりますのでご相談下さい。

[url=http://www.eccube-school.jp/]EC-CUBE

seasoft
投稿日時: 2008/8/9 19:44
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7365
Re: データベースの階層
引用:

homanさんは書きました:
僕は最近EC-CUBE2系を触るようになって、はじめて本格的にPostgreSQLに触れたので詳細は調べなければならないですが、PostgreSQLの初期スキーマはpublicです。
特にスキーマ名を指定しなければpublicだと暗黙の了解?で指定されますね。

http://www.postgresql.jp/document/pg833doc/html/ddl-schemas.html


?????

ご提示いただいた URL を読む限り、私は「ユーザと同じ名前のスキーマを参照する」と解釈しましたけど…
public は2番目のようですよ。
引用:

デフォルトの設定では次のように返されます。

search_path
--------------
"$user",public


ちなみに、
引用:

CREATE SCHEMA shop1 AUTHORIZATION shop1;
CREATE SCHEMA shop2 AUTHORIZATION shop2;

とかで、あらかじめスキーマ作成しておく必要があると思いますよ。> スレ主さん


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

homan
投稿日時: 2008/8/10 10:05
対応状況: −−−
仙人
登録日: 2007/7/2
居住地: 宮崎県宮崎市
投稿: 633
Re: データベースの階層
引用:

seasoftさんは書きました:
?????

ご提示いただいた URL を読む限り、私は「ユーザと同じ名前のスキーマを参照する」と解釈しましたけど…
public は2番目のようですよ。
引用:

デフォルトの設定では次のように返されます。

search_path
--------------
"$user",public


ちなみに、
引用:

CREATE SCHEMA shop1 AUTHORIZATION shop1;
CREATE SCHEMA shop2 AUTHORIZATION shop2;

とかで、あらかじめスキーマ作成しておく必要があると思いますよ。> スレ主さん


あ、本当ですね。ご指摘有難うございます!


引用:
5.7.2. publicスキーマ

これまでの節ではスキーマ名を指定せずにテーブルを作成してきました。デフォルトでは、このようなテーブル(および他のオブジェクト)は自動的に"public"という名前のスキーマに入れられます。新しいデータベースには全てこのようなスキーマが含まれています。そのため、以下の2つの構文は同等です。

CREATE TABLE products ( ... );

および

CREATE TABLE public.products ( ... );


というところまでしみていなかったです
ユーザ名スキーマがあるとそちらを優先するんですね。
後学のために役立てます!

これが分かっていれば、たしかにseasoftさんがおっしゃる通りになるような気がします。

まずshop1やshop2のようなユーザー(8.1よりあとのバージョンからはロールと言うらしいですが)をPostgreSQL上でつくって、「shop」というデータベースにshop1、shop2というスキーマを作り、あとはインストール時に「DB名」「DBパスワード」「DBユーザ」を入れるだけでスキーマの優先順位の関係でユーザー名と同じ名前のスキーマにそれぞれインストールされるはずですね


----------------
このコミュニティでの投稿はボランティアの範囲に留めさせていただいています。個別の相談やカスタマイズは有償にて承っておりますのでご相談下さい。

[url=http://www.eccube-school.jp/]EC-CUBE

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,288名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.