• 締切済み

データベース

[表]社員 と [表]組織 SQLと関係代数で記述して、結果を導出表として作成したいのですが・・・ 「社員」....................................................│..............「組織」 [社員ID]...[名前]....[年収]...[課ID]............│........[課ID].....[課名].....[課長] [1001].....[浅野]....[800]....[D].............. │..........[D].........[設計].....[1001] [1002].....[坂口]....[600]....[D]...............│..........[S].........[営業]......[1003] [1003].....[山口]....[800]....[S]...............│..........[P].........[社長室]...[NULL] [1004].....[森]........[900]....[S] [1005].....[田中]....[700]....[S] [1006].....[山田]....[600]....[NULL] 「表」社員を定義する。 CREATE TABLE 社員 ( 社員ID CHAR(4)    NOT NULL , 名前   NCHAR VARYING(20) , 年収  INTEGER , 課ID CHAR(1) , PRIMARY KEY (社員ID) , FOREIGN KEY (課ID) PEFERENCES 組織) 表「組織」を定義する CREATE TABLE 組織 ( 課ID CHAR (1) NOT NULL , 課名  NCHAR (10) , 課長  CHAR (4) , PRIMARY KEY (課 ID) , FOREIGN KEY (課長)  REFERENCES 社員) 1)表「社員」から年収800万未満の社員のすべての情報が知りたい 2)表「社員」と表「組織」から課名が設計である社員の社員IDと名前、課名を知りたい このように「データベース」という本に問題があるんですがわかります方、教えていただけませんでしょうか。 表など見にくいかとは思いますが、宜しくお願い致します。

noname#59705
noname#59705

みんなの回答

  • k_sidina
  • ベストアンサー率52% (9/17)
回答No.2

「データベース」という本におそらく、以下の項目の説明があると 思います。 ・SELECT ・OUTER JOIN ・WHERE (自分で書いていてなんですが、本によってはすべて SELECT の 説明にかいてあるかもしれません。) もしも、本を読んでも理解ができないということなのであれば、 SQL をご利用になるのは不可能かと思われます。 ↓の方も書かれていますが、「どこまでわかって、どこから わからない」のかがわからないので・・・。 あと、ご質問されるときは、どういう環境を使っているのか お書きになったほうがよろしいかと思います。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 んと…この手のものは。まず「自分ではどこまで理解していて」「どれくらいまでのSQLが書けて」「どこからがわからないか」くらい書いておきませんと、多分誰もちゃんとした回答をかえしてくれませんよ。 せめて。途中まででもいいので「出来るかぎりのSQL文」くらいは書く事を強くお勧めいたします。

関連するQ&A

  • データベースの考え方で。

    データベースの考え方、で教えてください。 路線検索と、路線にひもづく駅名の時刻表を表示させる、データベースを作りたいと思っているのですが、 その場合、考え方としては、以下のような感じになるのでしょうか? 路線名のtbl sql文: create table transit ( id integer not null, name varchar(20) not null ); 路線名tblにひもづく、駅名tbl sql文: create table station ( id integer not null primary key, transit_id integer not null, name varchar(20) not null ); 駅名tblにひもづく、時刻表tbl sql文: create table timetable ( id integer not null primary key, station_id integer not null, hour integer not null, minute integer not null ); 表示パターンとしては、 ================================= ○○線: XX駅 6:10 20 7:30 55 . . . . . . 22:15 36 ================================== のような感じです。 よろしくお願いします。

  • MySQLの外部キーの設定について

    はじめまして。 質問があります。 MySQLを使用しているのですが、以下を見てください。 ---------------------------------------------------------------- mysql> create table vendors -> ( -> vend_id char(10) NOT NULL, -> vend_name char(50) NOT NULL, -> vend_zip char(10), -> vend_state char(10), -> vend_city char(50), -> vend_address char(50), -> primary key(vend_id) -> ) TYPE=MyISAM; Query OK, 0 rows affected (0.38 sec) mysql> create table products -> ( -> prod_id char(10) NOT NULL, -> vend_id char(10) NOT NULL, -> prod_name char(255) NOT NULL, -> prod_price decimal(8,0) NOT NULL, -> prod_desc blob, -> primary key(prod_id), -> foreign key(vend_id) references vendors(vend_id) -> ) TYPE=MyISAM; Query OK, 0 rows affected (0.05 sec) ---------------------------------------------------------------- 外部キーを設定したつもりなのですが、desc productsを実行すると キーフィールドに「pri」と表示されているので、主キーが 設定されていることが確認できるのですが、外部キーが設定されて いることは確認できません。外部キーは設定されているのでしょうか? もし設定されていないのなら、どのようにすればよいのでしょうか? また、外部キーが設定されていることを確認するにはどうすれば よいでしょうか?ご教授お願いします。

    • ベストアンサー
    • MySQL
  • SQLと関係代数を求める問題で、この答えは合っていますか?

    SQLと関係代数を求める問題で、この答えは合っていますか? http://proxy.f3.ymdb.yahoofs.jp/bc/4808ca49_6239/bc/DSCF1126... 以下の問合わせをSQLと関係代数で記述し、結果を導出表として作成せよ。 問題 「表“社員”と表“組織”から、課名が‘設計’である社員の社員IDと名前、課名を知りたい。」 問題の表は上記のURLに載っています。(表示に時間がかかるかもしれませんが) これを解いてみると下のようになったのですが、このSQLであっているでしょうか?また関係代数はできなかったのですが、これはどうなるのでしょうか?よろしくお願いします。 SELECT 社員ID,名前,課名 FROM 社員 組織 WHERE 課名 = 設計 ーーーーーーーーーーーーーー 社員ID 名前 課名 1001 浅野 設計 1002 坂口 設計 ーーーーーーーーーーーーーーー

    • ベストアンサー
    • MySQL
  • データベースの問題

     (テーブル名)     (フィールド名)   学生表       番号,氏名,電話番号,アドレス,コースコード,出身県コード   コース表     コースコード,コース名   出身県表      出身県コード,出身県名 *コースコードは2文字で、経営コース(BM)、会計コース(AC)、情報コース(IS)、国際コース(IB) *出身県コードは2文字とし、データ入力時に各自定義するものとします。 ●上記のようなテーブルからなるデータベースを作成したいのですが、 (1)各テーブルの基本キーを教えてください。また、外部キーがあれば、その項目名と、その外部キーによって関係付けられているテーブル名を教えてください。  (2)各項目に適するデータ型を決めて、このデータベースのデータ定義をどのようなSQL-DDLで記述すればよろしいのでしょうか? ●このデータベースを用いて、つぎの検索を行うためのSELECT文をSQL-DMLでの記述の仕方を教えてください。 (3) 学籍番号、氏名、電話番号からなる表Aを作る。 (4) コース名、学籍番号、氏名からなる表Bを作る。 (5) 学籍番号、氏名、メールアドレス、出身県名からなる表Cを作る。 (6) 自分と同じコースの人の氏名とメールアドレスからなる表Dを作る。 (7) 学籍番号、氏名、コース名、出身県名からなる表Eを作る。 ちなみに、自分の解答は下記のようになったのですが、間違っている部分があるかと思うのでご指摘おねがいします。 (1) (テーブル名) (主キー)   (外部キー)    (外部キーによって関連付けられるテーブル)    学生表       番号    コースコード   コース表(コースコード)                     出身県コード   出身県表(出身県コード)        コース表    コースコード    なし        出身県表    出身県コード    なし (2)<データ定義(SQL-DDL)>  CREATE SCHEMA  AUTHORIZATION HAMADA  CREATE TABLE 学生表 (番号      CHAR(10) NOT NULL PRIMARY KEY,  氏名      CHAR(20),  電話番号   CHAR(30),  アドレス    CHAR(30),  コースコード CHAR(2) NOT NULL REFERENCES コース表)  出身県コード CHAR(2) NOT NULL REFERENCES 出身県表)  CREATE TABLE コース表 (コースコード CHAR(2) NOT NULL PRIMARY KEY,  コース名   CHAR(20) NOT NULL )  CREATE TABLE 出身県表 (出身県コード CHAR(2) NOT NULL PRIMARY KEY,   出身県名   CHAR(20) NOT NULL ) (3) SELECT 番号, 氏名, 電話番号 FROM 学生表 INTO 表A (4) SELECT コース名, 番号, 氏名 FROM 学生表, コース表 INTO 表B WHERE 学生表, コースコード = コース表, コースコード (5) SELECT 番号, 氏名, アドレス, 出身県名 FROM 学生表, 出身県名 INTO 表C WHERE 学生表, 出身県コード = 出身県表, 出身県コード (6) SELECT 氏名, アドレス FROM 学生表, コース表 INTO 表D WHERE 学生表, コースコード = コース表, コースコード AND コース名 = "情報コース" (7) SELECT 番号, 氏名, コース名, 出身県名 FROM 学生表, 出身県名 INTO 表E WHERE 学生表, 出身県コード = 出身県表, 出身県コード AND 学生表, コースコード = コース表, コースコード

  • データベースからの値の取得

    create table test (id char(30) not null, pass int not null, primary key (id)); で、作ったデータベースに値を入れ、そこから値を取得して、JSPの方でString型やint型の変数に入れて使いたいのですが、どのようにすればいいのでしょう? JSP側の指定の仕方がわかりません。 String id = ? ; int pass = ? ; ?の所に何を入れれば取得できるのでしょう? または、他に何か書かないとだめなのでしょうか? 省略していますがJSPはデータベースを使用して動いていますので、基本的な動きは問題ないと思います。 MySQLServer4.1を使用しています。 ご存知の方、よろしくお願いします。

    • ベストアンサー
    • Java
  • データベース:二つのテーブルの繋ぎ方

    私(あなた)が検査担当者だとします。 そして、測定担当者から CREATE TABLE measurement ( lot VARCHAR(10) NOT NULL, test_id INTEGER NOT NULL, data NUMERIC(17,7), PRIMARY KEY(lot, test_id) ); という、あるロットでのテスト番号に対する測定値データが送られてきたとします。 そして、設計担当者から CREATE TABLE spec ( test_name VARCHAR(10) NOT NULL, upper_limit NUMERIC(17,7), lower_limit NUMERIC(17,7), PRIMARY KEY(test_name) ); という、テスト項目名に対する上限・下限の仕様データが送られてきたとします。 ここで、テスト番号とテスト項目名は同じ数だけあって、お互いが一致するように同じ順番で並んでいるとします。 この二つのテーブルを使って、測定値が範囲内か範囲外かを調べるのが目的です。 この場合、どうやって二つのテーブルを繋ぐのが一般的ですか? 自分の考えだと、一旦、specテーブルにtest_idを加えて CREATE TABLE spec ( test_id INTEGER NOT NULL, test_name VARCHAR(10) NOT NULL, upper_limit NUMERIC(17,7), lower_limit NUMERIC(17,7), PRIMARY KEY(test_id, test_name) ); とするのですが、第二(第三?)正規化に基づいて CREATE TABLE spec ( test_id INTEGER NOT NULL, upper_limit NUMERIC(17,7), lower_limit NUMERIC(17,7), PRIMARY KEY(test_id) ); と CREATE TABLE test ( test_id INTEGER NOT NULL, test_name VARCHAR(10), PRIMARY KEY(test_id) ); の二つに分けるのかな、と思っています。 正規化の観点から言うと、きっとこれが正しいのかなと思っています。 でも、元々、specテーブルにはテスト項目名が入っていたのでテスト項目名と上限・下限が一目で分かっていたのに、このように分けると、いちいちspecテーブルでテスト番号を確認してから、testテーブルでそのテスト番号に該当するテスト項目名を見つけなくてはならなくなってしまいます。クエリーでの検索もJOINをしなければならなくなって遅くなりませんか? 敢えて正規化しないでおく、なんて手段もありますか? こんな場合、皆さんならどうしますか? 「こうするように決められている」なのか、 「ああもできるし、こうもできるんですが、どっちでもいいですよ」なのか、 温度差みたいなものもできれば知りたいです。

  • FOREIGN KEYの追加について。

    FOREIGN KEYの追加について。 MySQL5.1.37 CREATE TABLE `goods` ( `id` int NOT NULL AUTO_INCREMENT, `num` int NOT NULL DEFAULT '1', PRIMARY KEY (`id`), index (`num`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `sales` ( `id` int NOT NULL AUTO_INCREMENT, `num` int NOT NULL DEFAULT '1', PRIMARY KEY (`id`), index (`num`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 上記のようなテーブルを作り、salesテーブルにCSVファイルからデータをインポートしたのち、FOREIGN KEYを子テーブルに追加したいのですが、下記のようなエラーになります。 ALTER TABLE `sales` ADD FOREIGN KEY ( `num` ) REFERENCES `test`.`goods` ( `num` ) ON UPDATE CASCADE ; MySQLのメッセージ: ドキュメント #1452 - Cannot add or update a child row: a foreign key constraint fails (`test`.`#sql-561_cf`, CONSTRAINT `#sql-561_cf_ibfk_1` FOREIGN KEY (`num`) REFERENCES `goods` (`num`) ON UPDATE CASCADE) データをインポートしたのちにFOREIGN KEYを追加するにはどのようにしたらいいのでしょうか?

  • MySQLのFOREIGN KEYについて

     MySQLのFOREIGN KEYについて質問です。 下記のようにitemテーブルを作ってからarrivalhistoryテーブルを作ろうとすると ERROR 1005 (HY000): Can't create table 'xxx_db.arrivalhistory' (errno: 150) というエラーが出てしまいます。 自分でもForeign keyの作り方等調べてはみたのですが、 上手く解決することができません。 どなたかアドバイス下さい。お願いします。 ・親 create table item ( id bigint not null primary key, itemno VARCHAR(50) ) engine=InnoDB; ・子 create table arrivalhistory( id int primary key, itemno varchar(50), arrivaldate date, index(itemno), foreign key(itemno) references item(itemno) on update cascade on delete cascade ) engine=InnoDB;

    • ベストアンサー
    • MySQL
  • MySQLでCREATE TABLE

    MySQLでCREATE TABLEをする際に、 プライマリキーを設定する場合は、 CREATE TABLE( AAA CHAR(5) NOT NULL, BBB CHAR(5) NOT NULL, CCC VARCHAR(10) NOT NULL, PRIMARY KEY(AAA) ); のようにすると思うのですが、「BBB」を外部キーにしたい場合は、どうしたらいいのでしょうか?

  • 親子関係があるテーブル内での検索

    親のidを保持するテーブルです。 CREATE TABLE `tbl` ( `id` int PRIMARY KEY, `parent_id` int, FOREIGN KEY(`parent_id`) REFERENCES `tbl`(`id`) ) ENGINE=InnoDB; このテーブルで「parent_idがNULLで、かつ、子を持たない(親というか子でもないというか)行」 を検索したいのですが、どのようなSQLを記述すれば良いのでしょうか?

    • ベストアンサー
    • MySQL