2016-03-26 19 views
0

GlassfishでJDBCセキュリティレルムを設定すると、ユーザーコントロールアクセス(管理者とビューユーザー)を提供するこのリンクが表示されました。ここにこのチュートリアルのリンクがあります。mysqlビューのユーザーと管理者のユーザーの構文の照会

http://jugojava.blogspot.com.eg/2011/02/jdbc-security-realm-with-glassfish-and.html?showComment=1459000091065#c232448315667617784 

ガイドで理解できなかったことはほとんどなく、お手伝いできれば幸いです。以下の行はどういう意味ですか? (質問のの終わりに完全なSQLコード)

KEY `fk_users_has_groups_groups1` (`group_id`), 
KEY `fk_users_has_groups_users` (`user_id`), 

私は、任意のテーブルをuの名前が、コードをuを使用している表示されません。*。一番下のコードには "u"テーブルがありません。しかし、私は内部結合の "u"への参照を参照してください。私は選択することはできますか?このINNER JOINに基づいていますか?

CREATE VIEW `v_user_role` AS 
SELECT u.username, u.password, g.group_name 
FROM `user_groups` ug 
INNER JOIN `users` u ON u.user_id = ug.user_id 
INNER JOIN `groups` g ON g.group_id = ug.group_id; 

ここ

CREATE TABLE `groups` (
    `group_id` int(10) NOT NULL, 
    `group_name` varchar(20) NOT NULL, 
    `group_desc` varchar(200) DEFAULT NULL, 
    PRIMARY KEY (`group_id`) 
); 

CREATE TABLE `users` (
    `user_id` int(10) NOT NULL AUTO_INCREMENT, 
    `username` varchar(10) NOT NULL, 
    `first_name` varchar(20) DEFAULT NULL, 
    `middle_name` varchar(20) DEFAULT NULL, 
    `last_name` varchar(20) DEFAULT NULL, 
    `password` char(32) NOT NULL, 
    PRIMARY KEY (`user_id`) 
); 

CREATE TABLE `user_groups` (
    `user_id` int(10) NOT NULL, 
    `group_id` int(10) NOT NULL, 
    PRIMARY KEY (`user_id`,`group_id`), 
    KEY `fk_users_has_groups_groups1` (`group_id`), 
    KEY `fk_users_has_groups_users` (`user_id`), 
    CONSTRAINT `fk_groups` FOREIGN KEY (`group_id`) REFERENCES `groups` (`group_id`) ON DELETE NO ACTION ON UPDATE NO ACTION, 
    CONSTRAINT `fk_users` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE NO ACTION ON UPDATE NO ACTION 
); 

CREATE VIEW `v_user_role` AS 
SELECT u.username, u.password, g.group_name 
FROM `user_groups` ug 
INNER JOIN `users` u ON u.user_id = ug.user_id 
INNER JOIN `groups` g ON g.group_id = ug.group_id; 
INSERT INTO `groups`(`group_id`,`group_name`,`group_desc`) VALUES 
    (1,'USER','Regular users'), 
    (2,'ADMIN','Administration users'); 

INSERT INTO `users`(`user_id`,`username`,`first_name`,`middle_name`,`last_name`,`password`) VALUES 
    (1,'john','John',NULL,'Doe','6e0b7076126a29d5dfcbd54835387b7b'), /*john123*/ 
    (2,'admin',NULL,NULL,NULL,'21232f297a57a5a743894a0e4a801fc3'); /*admin*/ 

INSERT INTO `user_groups`(`user_id`,`group_id`) VALUES (1,1),(2,1),(2,2); 

答えて

1

1)キーがそれらのフィールドがインデックス付けされていることを示す完全なコードです。インデックスは一意ではありません。 create index documentationを参照してください。

2) "u"はaliasです。具体的には、テーブルエイリアスです。別名を使用して、別の名前のテーブルまたはフィールド名を参照できます。エイリアスはクエリに固有です。エイリアスがからの句で定義されています

`users` u 
+0

エイリアスについては、それは私が疑われたが、私を混乱させているものがSELECT uはuが数行を述べた参照の前にu.usernameなどを選択し、エイリアスを使用していることである何INNER JOINの下にあります。それはできますか? SELECTで参照uを使用し、後で参照するものについて言及してください。この声明を書いた方がいいですか? – Moe

+1

はい、できます。 SQL文を書くときにselectリストがfrom節の前にあるにもかかわらず、selectリストが** from **節の後に評価されることを忘れないでください! – Shadow

+0

ありがとうございました。 – Moe

関連する問題