בשנת 1992 חוקקה הכנסת לראשונה חוקי יסוד "מהותיים" (כלומר, עוסקים ב"זכויות אדם" ולא "חוקים מוסדיים"): תחילה נחקק ולאחר מכן נחקק .
בשנת 1994 קבע בג"ץ לראשונה את סמכותו לפסול חקיקה ראשית של הכנסת אם היא סותרת חוק יסוד ואינה עומדת בפיסקת ההגבלה של אותו חוק יסוד, בכך קבע למעשה את מעמד חוקי היסוד כחוקה. בפסק דין בנק המזרחי (1994) קבע בג"ץ בהחלטה תקדימית, שבכוחו של בג"ץ לבטל סעיף מפורש בחוק ההסדרים שצמצם את חובות החקלאים לבנקים, בהסתמך על חוק: יסוד כבוד האדם וחרותו שמבהיר ש"אין פוגעים בקניינו של אדם", זאת אף שלגופה של עתירה נמנע בג"ץ מלבטל את החוק כיוון שסבר שהוא עומד בפיסקת ההגבלה. בפסיקה זו הרחיב בג"ץ את הקביעה שבכוחו לבטל חוק מפורש של הכנסת מכוח חוק יסוד, בטענה שכך מתפרש הנוסח המופיע בסעיף 8 של בו נאמר: "אין פוגעים בזכויות שלפי חוק-יסוד זה...", והחיל אותה על כל חוקי היסוד. כמו כן קבע בג"ץ בהחלטה תקדימית שלא ניתן לבטל את אלא ברוב של 61 ח"כים, בטענה שכך מתפרש הנוסח המופיע בסעיף 7 של החוק בו נאמר: "אין לשנות חוק-יסוד זה אלא בחוק-יסוד שנתקבל ברוב של חברי הכנסת", והחיל זאת על כל חוקי היסוד.
ב-1997 עתרה לבג"ץ "לשכת מנהלי ההשקעות בישראל", נגד חוק שחייב את יועצי ההשקעות להתאגד, להעמיד הון עצמי, להימנע מטיפול בניירות ערך שלהם או של קרובים (למנוע ניגוד עניינים) ולעבור מבחני הסמכה. לטענת העותרים כל אחת מהדרישות היא פגיעה בחופש העיסוק, גם כלפי יועצים חדשים ובפרט כלפי יועצי ותיקים שעסקו בתחום פחות משבע שנים. בג"ץ קבע בפסק הדין שההוראה בחוק לחייב יועצים ותיקים לעבור בחינות הסמכה כתנאי להמשך עיסוקם בייעוץ, במתכונתה הנוכחית, אינה חוקתית. בהתאם לכך ביטל בג"ץ את החלטת הכנסת.
מאוחר יותר, בפסק דין הנדלמן ביטל בית משפט השלום את החקיקה שאסרה על יועץ שאינו רשום בפנקס יועצי המס להציג עצמו כ"יועץ מס", מפני שפגעה בחופש העיסוק בצורה לא מידתית. הדבר עורר מחלוקת חריפה בשל ההרחבה המשמעותי של הביקורת השיפוטית כל החקיקה כך שאינה מוגבלת רק לבית המשפט העליון. בדיון בערעור העיר בית המשפט המחוזי לבית משפט השלום על שלא נקט איפוק מספיק בבואו לבטל חקיקה ראשית של הכנסת.
הקואליציה הלאומית של סוריה
שאילתות היררכיות ורקורסיביות ב-SQL
שאילתה היררכית היא שאילתת SQL שמטפלת בנתוני מודל היררכי.
על פי תקן SQL:1999 שאילתות היררכיות מיושמות באמצעות CTE רקורסיבי (Common Table Expression, ביטוי טבלה משותף), בניגוד להרחבה של אורקל שתתואר בהמשך, בדומה לאופן שיושם לראשונה ב-DB2 גרסה 2, ובהמשך ב-SQL Server, Oracle 11g Release 2, Firebird, PostgreSQL ו-Cubrid.
סינטקס חלופי הוא Connect By הלא סטנדרטי שהוצג על ידי אוראקל ב-1980. לפני גרסה 10g הוא היה שימושי רק לגרפים ללא לולאות (עצים למשל), ומגרסה זו התווסף השימוש באופרטור NoCycle הפותר את הבעיה.
Connect By.
Connect By נתמך על ידי אוראקל, EnterpriseDB, Cubrid, DB2. הסינטקס:
SELECT select_list
FROM table_expression
[ WHERE ... ]
[ START WITH start_expression ]
[ ORDER SIBLINGS BY column1 [ ASC | DESC ] [, column2 [ ASC | DESC ] ] ...
[ GROUP BY ... ]
[ HAVING ... ]
למשל:
SELECT LEVEL,
LPAD (' ', 2 * (LEVEL - 1)) || ename "employee",
empno,
mgr "manager"
FROM emp START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr;
הפלט של השאילתה הנ"ל יראה כך:
level | employee | empno | manager
1 | KING | 7839 |
2 | JONES | 7566 | 7839
3 | SCOTT | 7788 | 7566
4 | ADAMS | 7876 | 7788
3 | FORD | 7902 | 7566
4 | SMITH | 7369 | 7902
2 | BLAKE | 7698 | 7839
3 | ALLEN | 7499 | 7698
3 | WARD | 7521 | 7698
3 | MARTIN | 7654 | 7698
3 | TURNER | 7844 | 7698
3 | JAMES | 7900 | 7698
2 | CLARK | 7782 | 7839
3 | MILLER | 7934 | 7782
דוגמה נוספת - הדוגמה שלהלן תחזיר את שם המשפחה של כל עובד במחלקה 10, שרשרת הניהול מעל העובד, מספר דרגות הניהול בין המנהל לעובד, והנתיב בעץ ביניהם:
SELECT ename "Employee",
CONNECT_BY_ROOT ename "Manager",
LEVEL-1 "Pathlen",
SYS_CONNECT_BY_PATH(ename, '/') "Path"
FROM emp
WHERE LEVEL &gt; 1
and deptno = 10
CONNECT BY PRIOR empno = mgr
ORDER BY "Employee", "Manager", "Pathlen", "Path";
בנוסף- ניתן לחולל סט בעזרת Connect By, למשל המספרים מ-1 עד 9
Select Level As N
From Dual
Connect By Level&lt;=9;
Common Table Expression (ביטוי טבלה משותף).
CTE הוא שם זמני לסט תוצאות של שאילתה שמתקיים במסגרת פקודת DML בודדת.
ניתן להתייחס אליו כאל שאילתת משנה או View זמני.
הם נתמכים על מספר רב של בסיסי נתונים, וביניהם DB2, SQL Server ואוראקל.
סינטקס:
With query_name As
(Select...
Select …
From query_name
CTE רקורסיבי (או Recursive Subquery Factoring באוראקל) מטפל בקשרים כמו בגרפים ובעיקר עצים, וחייב שימוש רב יותר קוד מאשר אופציית ה-Connect By הנ"ל שיש בה למשל חישוב אוטומטי של רמת ההיררכיה Level וכו', אם כי מנגד יכולותיה חזקות יותר.
דוגמה לקוד ב-Transact-SQL ל"פיצוץ" עץ מוצר תוך מניעת לולאה אינסופית:
With T As
(Select BillOfMaterialsID OriginalBillOfMaterialsID,
BillOfMaterialsID,
ComponentID,
1 Level,
Cast(BillOfMaterialsID As Varchar(Max))+'/'+Cast(ComponentID As Varchar(Max)) Path
From Production.BillOfMaterials
Union All
Select T.OriginalBillOfMaterialsID,
BOM.BillOfMaterialsID,
BOM.ComponentID,
Level+1 Level,
T.Path+'/'+Cast(BOM.ComponentID As Varchar(Max)) Path
From Production.BillOfMaterials BOM
Inner Join T
On T.ComponentID=BOM.BillOfMaterialsID
Where '/'+T.Path+'/' Not Like '%/'+Cast(BOM.ComponentID As Varchar(Max))+'/%')
Select *
From T
Option (MaxRecursion 0);
דוגמה לקוד המחולל רשימת מספרים מ-1 ועד 9 ומחשב לכל אחד מהם את העצרת:
With Temp As
(Select 0 N,
1 Fct -- Initial Subquery
Union All
Select N+1,
(N+1)*Fct
From Temp -- Recursive Subquery
Where N&lt;9)
Select *
From Temp;
כפי שניתן לראות ה-CTE מורכב משתי שאילתות המחוברות אנכית בעזרת האופרטור Union All: למעלה העוגן (anchor) ולמטה השאילתה הרקורסיבית שפונה ל-CTE (כלומר - מתוך ה-CTE ששמו Temp נעשית פניה ל-Temp עצמו).
במילים אחרות, בניגוד לרקורסיה בשפות פרוצדורליות, אין כאן רקורסיה עם תנאי עצירה, אלא עוגן ורקורסיה.
תנאי העצירה בדוגמה האחרונה הוא פסוקית התנאי Where N&lt;9 שמונעת לולאה אינסופית.
במקרה של שליפה מטבלה היררכית אין בדרך כלל צורך בתנאי עצירה מכיוון שמעשית מדובר בהיררכיה סופית המיוצגת על ידי עץ, אם כי עדיין אין מניעה טכנית ליצור לולאה אינסופית.
השימוש ב-Connect By התווסף לאוראקל בשנת 1979, וב-CTE רקורסיבי ב-2009.
SQL Server תומך ב-CTE רקורסיבי מ-2005.
דמניסי
דמַנִיסִי (בגאורגית: დმანისი) היא עיירה ואתר ארכאולוגי בנפת דמניסי שבכארתלי תחתית, גאורגיה. דמניסי הוכרזה כעיר ב-1981 ונכון לשנת 2002 היא מונה 3,427 תושבים. דמניסי ממוקמת על קרקע וולקנית בעמק נהר מַאשַאווֶרָה (მაშავერა) שברכס הקווקז, כ-83 ק"מ דרומית מערבית לעיר הבירה של גאורגיה- טביליסי. האתר הארכאולוגי נמצא בקרבת העיר המודרנית ונושא את אותו השם. באתר מצויים חורבותיה של עיירה מימי הביניים מהמאות 15-6, מתחת לחורבות אלו נמצא אתר פרהיסטורי מהתקופה הפלאוליתית התחתונה. דמניסי נודעה בעולם בעיקר בזכות הממצא יוצא הדופן של שלדי אדם מסוג הומו גאורגיקוס. אלו הם למעשה מאובני האדם הקדומים ביותר המצויים מחוץ לאפריקה. בשל חשיבותו, בשנת 2007, הוכרז האתר כאתר מורשת עולמי.
היסטוריה.
דמניסי הייתה מיושבת עוד מתקופת הברונזה הקדומה. במאה השישית נבנית במקום קתדרלה אורתודוקסית נוצרית בשם - "דמניסיס סיוני" (סיוני של דמניסי, להבדיל מקתדרלת סיוני שבטביליסי. המילה סיוני פירושה ציון). דמניסי מוזכרת לראשונה במאה התשיעית כרכושו של האמיר הערבי של טביליסי. העיר שוכנת במקום אסטרטגי בנקודת מפגש על דרך המשי וכך בימי הביניים היא הפכה למרכז מסחרי משמעותי בגאורגיה. בשנת 1080 נכבשה העיר על ידי הסלג'וקים, אך מאוחר יותר, בין השנים 1125–1123, שוחררה על ידי מלכי גאורגיה דוד הבנאי ודמטרה הראשון. במאה ה-14 נפלה דמניסי קורבן לסדרת פלישות הרסניות של הצבאות הטורקו-מונגוליים, בהנהגת טימור לנג, ונהרסת כליל. לאחר שנבזזה שוב על ידי הטורקמנים בשנת 1486, העיירה לא התאוששה והיא הפכה לכפר קטן.
האתר הארכאולוגי.
בשנת 1936 החלו חפירות ארכאולוגיות בחורבות המגורים מימי הביניים בדמיניסי. בשנת 1983, בתוך סדימנטים ליד מרתפים מימי הביניים, גילו הארכאולוגים שן של קרנף קדום (Dicerorhinus etruscus etruscus). מין זה של קרנפים חי באזור בתקופה הפלאוליתית הקדומה. התגלית הביאה לחשיפת האתר הפלאוליתי. בשנת 1984 התגלו כלי האבן הראשונים.