2016-03-26 20 views
0

Glassfish ile JDBC güvenlik alanını kurma ve kullanıcı kontrol erişimi sağlayan (kullanıcılara vs admin) bağlantıya rastladım. İşte bu eğitimin bağlantısı.mysql kullanıcılara vs admin kullanıcısı sözdizimi sorgulama

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

Rehberde anlamadığım bazı şeyler ve umarım yardımcı olabilirsiniz. Aşağıdaki çizgiler ne anlama geliyor? (Soru sonunda tam sql kodu)

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

Ben herhangi bir tablo u adında fakat kod u kullandığını görmüyorum. *. Alt kısımdaki kodda "u" tablosu yok. Bununla birlikte, iç birleşimdeki "u" referansını görüyorum. U seçebilir miyim bu INNER JOIN dayalı?

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; 

İşte

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); 

cevap

1

1) ANAHTAR bu alanları endeksli olduğunu gösterir tam Kod olduğunu. Endeks benzersiz değildir. Bakınız create index documentation.

2) "u" bir alias, özellikle bir tablo diğer addır. Farklı adlar altında bir tablo veya alan adına başvurmak için takma adları kullanabilirsiniz. Bir takma bir sorguya özgüdür. takma gelen fıkra tanımlanır:

`users` u 
+0

Alias ​​ile ilgili olarak, ben şüpheli ama kafamı karıştırıyor ne SEÇ u u birkaç satır bahsedildi referans önce u.username vb seçerek takma kullandığı budur INNER JOIN içinde. bunu yapabilir misin? SELECT referansını kullanın ve daha sonra ne referans gösterdiğinden bahsedin. Bu ifadeyi yazmanın daha iyi bir yolu var mı? – Moe

+1

Evet, bunu yapabilirsin. Unutmayın, select listesi ** 'den sonra, **' nin deyimini yazdığınızda, select list 'in fıkradan önde olmasına rağmen,' 'i' 'ifadesinden sonra değerlendirilir. – Shadow

+0

Çok teşekkürler o kadar açık şeyler! – Moe

İlgili konular