************* ì‚¬ìš©ìž ìŠ¤í‚¤ë§ˆ ************* 스키마는 ë°ì´í„°ë² ì´ìФ ê°ì²´ì˜ 논리ì ì¸ ëª¨ìŒì´ë‹¤. 스키마 ì´ë¦„ì„ í†µí•´ ê°ì²´ë¥¼ ì‹ë³„í• ìˆ˜ 있다는 것ì´ë©°, 스키마 ê°ì²´ë¥¼ 물리ì 으로 ë¶„ë¦¬ëœ ì €ìž¥ê³µê°„ì— ì €ìž¥í•˜ì§€ 않는다. ê°ì²´ëŠ” í•˜ë‚˜ì˜ ìŠ¤í‚¤ë§ˆì—ë§Œ ì¡´ìž¬í• ìˆ˜ 있으며 ë™ì‹œì— 다른 ìŠ¤í‚¤ë§ˆì— ì¡´ìž¬í• ìˆ˜ 없다. 스키마는 사용ìžê°€ ìƒì„±í• 수 없으며, ë°ì´í„°ë² ì´ìФ ì‚¬ìš©ìž ìƒì„± 시 해당 사용ìžëŠ” ì‚¬ìš©ìž ì´ë¦„ê³¼ ë™ì¼í•œ ì´ë¦„ì˜ ë‹¨ì¼ ìŠ¤í‚¤ë§ˆë¥¼ ì†Œìœ í•˜ê²Œ ëœë‹¤. 스키마ì—는 í…Œì´ë¸”, 시리얼 ë° íŠ¸ë¦¬ê±°ê°€ í¬í•¨ëœë‹¤. ìŠ¤í‚¤ë§ˆì˜ ê°ì²´ëŠ” ë™ì¼í•œ 스키마 ë‚´ì—서 ê³ ìœ í•œ ì´ë¦„ì„ ê°€ì ¸ì•¼ 하지만 다른 ìŠ¤í‚¤ë§ˆì˜ ê°ì²´ì™€ 중복ë˜ëŠ” ì´ë¦„ì„ ê°€ì§ˆ 수 있다. ê°ì²´ì— ì ‘ê·¼í•˜ë ¤ë©´ 사용ìžëŠ” "스키마 ì´ë¦„.í…Œì´ë¸” ì´ë¦„"ì˜ ê²½ë¡œ 표현ì‹ì„ 사용해야 한다. 사용ìžì˜ 스키마가 ê°ì²´ì˜ 스키마와 (ì†Œìœ ìž) ë™ì¼í•œ 경우 경로 표현ì‹ì—서 스키마 ì´ë¦„ì„ ìƒëžµí• 수 있다. 스키마 ì´ë¦„ì„ ìƒëžµí•˜ë©´ 해당 사용ìžì˜ 스키마 ì´ë¦„ì´ ì‚¬ìš©ëœë‹¤. "스키마 ì´ë¦„.í…Œì´ë¸” ì´ë¦„"ì˜ ê²½ë¡œ 표현ì‹ì„ 사용하ë”ë¼ë„ 사용ìžëŠ” 해당 ê°ì²´ë¥¼ ì‚¬ìš©í• ìˆ˜ 있는 ê¶Œí•œì´ ìžˆì–´ì•¼ 한다. .. note:: 11.2 ë²„ì „ ì´í›„부터 "스키마 ≒ ë°ì´í„°ë² ì´ìФ" ê°œë…ì´ "스키마 ≒ 사용ìž"로 변경ë˜ì—ˆë‹¤. 11.2 ë²„ì „ ì´ì „ì—는 ë°ì´í„°ë² ì´ìŠ¤ì— ë‹¨ì¼ ìŠ¤í‚¤ë§ˆë§Œ 가능했지만 11.2 ë²„ì „ë¶€í„°ëŠ” ì‚¬ìš©ìž ë³„ë¡œ 스키마를 ì‚¬ìš©í• ìˆ˜ 있다. ë”°ë¼ì„œ í…Œì´ë¸” ì´ë¦„만으로는 다른 사용ìžê°€ ì†Œìœ í•œ í…Œì´ë¸”ì— ì ‘ê·¼í• ìˆ˜ 없으며, 스키마 (ì†Œìœ ìž) ì´ë¦„ì„ ì ‘ë‘사로 붙여서 사용해야 해당 í…Œì´ë¸”ì— ì ‘ê·¼í• ìˆ˜ 있다. 기본 ì˜ˆì œ ë°ì´í„°ë² ì´ìŠ¤ì¸ demodbì—서는 다ìŒê³¼ ê°™ì€ ì°¨ì´ì ì´ ìžˆë‹¤. .. code-block:: shell csql -u dba demodb .. code-block:: sql SELECT name FROM athlete LIMIT 1; ERROR: before ' ; ' Unknown class "dba.athlete". SELECT name FROM public.athlete LIMIT 1; name ====================== 'Fernandez Jesus' í…Œì´ë¸”, 시리얼 ë° íŠ¸ë¦¬ê±°ë¥¼ 관리하는 시스템 í…Œì´ë¸”ì— (_db_class, db_serial, db_trigger) unique_name ì¹¼ëŸ¼ì´ ì¶”ê°€ë˜ì—ˆë‹¤. unique_name ì¹¼ëŸ¼ì€ ìŠ¤í‚¤ë§ˆ ì´ë¦„ì´ ì ‘ë‘사로 ë¶™ì€ ì´ë¦„ì„ ì €ìž¥í•œë‹¤. _db_classì˜ unique_name 칼럼ì—서 시스템 í…Œì´ë¸” ì´ë¦„ì€ ìŠ¤í‚¤ë§ˆ ì´ë¦„ì´ ì ‘ë‘사로 붙지 않는다. .. code-block:: shell csql -u public demodb .. code-block:: sql CREATE TABLE table_1 (column_1 INTEGER); CREATE TABLE table_2 (column_1 INTEGER); CREATE TRIGGER trigger_1 AFTER INSERT ON table_1 EXECUTE INSERT INTO table_2 VALUES (obj.column_1); .. code-block:: shell csql -u dba demodb .. code-block:: sql SELECT unique_name, class_name, owner.name FROM _db_class ORDER BY unique_name; unique_name class_name owner.name ============================================================== '_db_attribute' '_db_attribute' 'DBA' '_db_auth' '_db_auth' 'DBA' '_db_charset' '_db_charset' 'DBA' '_db_class' '_db_class' 'DBA' '_db_collation' '_db_collation' 'DBA' ... 'db_attr_setdomain_elm' 'db_attr_setdomain_elm' 'DBA' 'db_attribute' 'db_attribute' 'DBA' 'db_auth' 'db_auth' 'DBA' 'db_authorization' 'db_authorization' 'DBA' 'db_authorizations' 'db_authorizations' 'DBA' ... 'public.athlete' 'athlete' 'PUBLIC' 'public.code' 'code' 'PUBLIC' 'public.event' 'event' 'PUBLIC' 'public.game' 'game' 'PUBLIC' 'public.history' 'history' 'PUBLIC' SELECT unique_name, name, owner.name FROM db_serial ORDER BY unique_name; unique_name name owner.name ========================================================= 'public.athlete_ai_code' 'athlete_ai_code' 'PUBLIC' 'public.event_no' 'event_no' 'PUBLIC' 'public.stadium_no' 'stadium_no' 'PUBLIC' SELECT unique_name, name, owner.name FROM db_trigger ORDER BY unique_name; unique_name name owner.name ============================================= 'public.trigger_1' 'trigger_1' 'PUBLIC'