คำถามติดแท็ก hierarchy

สำหรับประเด็นเกี่ยวกับการจัดเรียงสิ่งของให้เป็นระดับตามสั่ง.

3
ค้นหาระดับสูงสุดของฟิลด์ลำดับชั้น: ด้วย vs ไม่มี CTEs
หมายเหตุ: คำถามนี้ได้รับการปรับปรุงเพื่อสะท้อนให้เห็นว่าขณะนี้เรากำลังใช้ MySQL โดยทำเช่นนั้นฉันอยากจะดูว่ามันจะง่ายกว่านี้ถ้าเราเปลี่ยนไปใช้ฐานข้อมูลที่สนับสนุน CTE ผมมีตารางอ้างอิงตนเองกับคีย์หลักและต่างประเทศที่สำคัญidparent_id +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | parent_id | int(11) | YES | | NULL | | | name | varchar(255) | …

3
ลำดับชั้นต้นไม้พ่อแม่และลูก
ฉันต้องติดตามข้อมูลใน SQL Server 2008 R2 SQLFiddle schema: สร้างตาราง [dbo] [ICFilters] ( [ICFilterID] [int] ตัวตน (1,1) ไม่เป็นโมฆะ [ParentID] [int] ไม่เสียค่าเริ่มต้น 0 [FilterDesc] [varchar] (50) ไม่เป็นโมฆะ [ใช้งาน] [tinyint] ไม่เป็นค่าเริ่มต้น 1 CONSTRAINT [PK_ICFilters] คีย์หลักที่คลัสเตอร์ ([ICFilterID] ASC) พร้อม PAD_INDEX = ปิด STATISTICS_NORECOMPUTE = OFF IGNORE_DUP_KEY = ปิด ALLOW_ROW_LOCKS = เปิด ALLOW_PAGE_LOCKS = เปิด ) …

5
ใครใช้ HierarchyId ในการผลิต? มันน่าเชื่อถือเหรอ?
มีใครใช้ HierarchyId ในการผลิตจริงกับตารางขนาดที่เหมาะสมมากกว่าสองสามพันแถวใช่ไหม มันน่าเชื่อถือ / นักแสดง? เพื่อให้ห่างไกลฉันไม่ได้พบคนที่ไม่ได้มีส่วนเกี่ยวข้องกับผู้ขายแนะนำและให้คำแนะนำแก่พอลนีลเซ่นกับมันนี่ ประสบการณ์ของคุณในการใช้ HierarchyId ในระบบการผลิตจริงคืออะไร คุณใช้เกณฑ์ใดเมื่อคุณเลือก HierarchyId ทางเลือกอื่น

3
สร้างลำดับชั้นของหลายระดับโดยที่แต่ละโหนดมีจำนวนชายด์แบบสุ่ม
ฉันต้องการสร้างข้อมูลทดสอบที่เกี่ยวข้องกับลำดับชั้น ฉันสามารถทำให้ง่ายและทำสองสามCROSS JOINวินาที แต่นั่นจะให้โครงสร้างที่เหมือนกันโดยสมบูรณ์ / ไม่มีการเปลี่ยนแปลงใด ๆ นั่นไม่เพียง แต่ดูน่าเบื่อ แต่การขาดความผันแปรในข้อมูลการทดสอบบางครั้งก็เป็นตัวกำหนดปัญหาที่อาจพบได้ ดังนั้นฉันต้องการสร้างลำดับชั้นที่ไม่เหมือนกันซึ่งปฏิบัติตามกฎเหล่านี้: ลึก 3 ระดับ ระดับ 1 คือการสุ่ม 5 - 20 โหนด ระดับ 2 คือ 1 - 10 โหนดสุ่มต่อโหนดระดับ 1 แต่ละโหนด ระดับ 3 คือ 1 - 5 โหนดสุ่มต่อโหนดระดับ 2 แต่ละโหนด ทุกสาขาจะลึก 3 ระดับ ความสม่ำเสมอในเชิงลึกก็โอเค ณ จุดนี้ อาจมีการทับซ้อนกันในชื่อของโหนดลูกในระดับที่กำหนดใด ๆ (เช่นชื่อของโหนดลูกไม่จำเป็นต้องไม่ซ้ำกันในทุกโหนดในระดับเดียวกัน) คำว่า "สุ่ม" …

4
การสำรวจข้อมูลที่มีลักษณะคล้ายต้นไม้ในฐานข้อมูลเชิงสัมพันธ์โดยใช้ SQL
มีวิธีการสำรวจข้อมูลต้นไม้ใน SQL หรือไม่ ฉันรู้เกี่ยวกับconnect byใน Oracle แต่มีวิธีอื่นในการใช้ SQL อื่น ๆ ? ฉันถามเพราะการใช้connect byนั้นง่ายกว่าการเขียนลูปหรือฟังก์ชั่นวนซ้ำเพื่อเรียกใช้คิวรีสำหรับผลลัพธ์แต่ละรายการ เนื่องจากบางคนดูเหมือนจะสับสนกับวลี "ข้อมูลต้นไม้" ฉันจะอธิบายเพิ่มเติม: สิ่งที่ฉันหมายถึงเกี่ยวกับตารางที่มีparent_idเขตข้อมูลหรือคล้ายกันซึ่งมีคีย์หลักจากแถวอื่นในตารางเดียวกัน คำถามมาจากประสบการณ์ที่ฉันทำงานกับข้อมูลที่เก็บในลักษณะนี้ในฐานข้อมูล Oracle และรู้connect byว่าไม่ได้ดำเนินการใน DBMS อื่น ๆ หากมีใครที่จะใช้ SQL มาตรฐานคนหนึ่งจะต้องสร้างนามแฝงตารางใหม่สำหรับผู้ปกครองแต่ละคนหนึ่งที่ต้องการขึ้นไป สิ่งนี้สามารถหลุดออกจากมือได้อย่างง่ายดาย

2
มีวิธีการตั้งค่าในการโหลด / อ่านสาขาต้นไม้ด้วย HierarchyId
ฉันกำลังเล่นกับ HierarchyId และฉันยังไม่ได้คิดวิธีที่จะทำตามต่อไปนี้: แทรกทรีย่อยทั้งหมดในคราวเดียว ดึงทรีย่อยทั้งหมดในครั้งเดียว คำถามนี้เกี่ยวข้องกับคำถามก่อนหน้าของฉันและฉันสงสัยว่าวิธีเดียวที่จะทำงานสองอย่างนี้ให้สำเร็จด้วย HierarchyId คือหนึ่งโหนดหรือหนึ่งระดับในแต่ละครั้ง หากฉันใช้เส้นทางที่เป็นรูปธรรมการกระทำทั้งสองอย่างสามารถทำได้อย่างง่ายดายโดยคำสั่งพื้นฐานเดียว (และไม่สำคัญ) ฉันกำลังคิดถึงอะไร แก้ไข: ฉันพลาดวิธีย้ายทรีย่อย แต่ฉันเรียนรู้จากความคิดเห็นของ Mikael Eriksson

3
Oracle: ฉันจะค้นหาตารางลำดับชั้นได้อย่างไร
พื้นหลัง นี่คือการสร้างมุมมองบางอย่างที่เราจะใช้สำหรับการรายงาน ฉันมีตารางของสถานที่คีย์ฟิลด์เป็น "สถานที่" และ "ผู้ปกครอง" โครงสร้างที่สองฟิลด์นี้สร้างระดับที่ชาญฉลาดจะอยู่ในแนวเดียวกันกับชื่อ บริษัท -> ชื่อวิทยาเขต -> ชื่ออาคาร -> ชื่อชั้น -> ชื่อห้อง ชื่อ บริษัท ยังคงเหมือนเดิมและชื่อวิทยาเขตจะยังคงเหมือนเดิมในกรณีนี้ โครงสร้างของสถานที่โดยทั่วไปมีลักษณะดังนี้: +-----------+ | Org. Name | +-----+-----+ | +-----v-----+ +--------------------+|Campus Name|+---+--+-------------+ | +--+--------+ | | | | | | | | | | +--+-----+ +------+-+ +--+----+ +---+---+ +--+| BLDG-01|+--+ | BLDG-02| …
10 oracle  query  view  hierarchy 

6
ตารางที่มีลำดับชั้น: สร้างข้อ จำกัด เพื่อป้องกันการเวียนผ่านปุ่มต่างประเทศ
สมมติว่าเรามีตารางที่มีข้อ จำกัด foreign key กับตัวเองเช่น: CREATE TABLE Foo (FooId BIGINT PRIMARY KEY, ParentFooId BIGINT, FOREIGN KEY([ParentFooId]) REFERENCES Foo ([FooId]) ) INSERT INTO Foo (FooId, ParentFooId) VALUES (1, NULL), (2, 1), (3, 2) UPDATE Foo SET ParentFooId = 3 WHERE FooId = 1 ตารางนี้จะมีบันทึกต่อไปนี้: FooId ParentFooId ----- ----------- 1 3 2 …

1
สิทธิ์ลำดับชั้นในตารางที่จัดเก็บลำดับชั้น
สมมติว่าโครงสร้างฐานข้อมูลต่อไปนี้ (แก้ไขได้ถ้าต้องการ) ... ฉันกำลังมองหาวิธีที่ดีในการพิจารณา "สิทธิ์ที่มีประสิทธิภาพ" สำหรับผู้ใช้ที่ได้รับในหน้าเว็บที่กำหนดในวิธีที่ช่วยให้ฉันกลับแถวที่มีหน้าและสิทธิ์ที่มีประสิทธิภาพ ฉันคิดว่าทางออกที่ดีที่สุดอาจรวมถึงฟังก์ชันที่ใช้ CTE เพื่อดำเนินการเรียกซ้ำที่จำเป็นในการประเมิน "การอนุญาตที่มีประสิทธิภาพ" สำหรับแถวหน้าที่กำหนดสำหรับผู้ใช้ปัจจุบัน ความเป็นมาและรายละเอียดการใช้งาน สคีมาด้านบนแสดงถึงจุดเริ่มต้นสำหรับระบบการจัดการเนื้อหาที่ผู้ใช้สามารถได้รับอนุญาตโดยการเพิ่มและลบออกจากบทบาท ทรัพยากรในระบบ (เช่นหน้า) เกี่ยวข้องกับบทบาทเพื่อให้กลุ่มผู้ใช้ที่เชื่อมโยงกับบทบาทนั้นได้รับอนุญาต แนวคิดคือเพื่อให้สามารถล็อกผู้ใช้ได้ง่ายโดยเพียงแค่ปฏิเสธบทบาททั้งหมดและเพิ่มเพจระดับรูทในทรีให้กับบทบาทนั้นจากนั้นเพิ่มผู้ใช้เข้ากับบทบาทนั้น สิ่งนี้จะช่วยให้โครงสร้างการอนุญาตยังคงอยู่เมื่อ (ตัวอย่าง) ผู้รับเหมาที่ทำงานให้ บริษัท ไม่พร้อมใช้งานเป็นเวลานานจากนั้นจะอนุญาตให้มีการอนุญาตแบบเดิมโดยเพียงแค่ลบผู้ใช้ออกจากบทบาทนั้น . การอนุญาตขึ้นอยู่กับกฎชนิด ACL ทั่วไปที่อาจนำไปใช้กับระบบไฟล์โดยทำตามกฎเหล่านี้ สิทธิ์ CRUD จะเป็นบิตที่ไม่สามารถใช้ได้ดังนั้นค่าที่มีอยู่จะเป็นจริง, เท็จ, ไม่ได้กำหนดไว้โดยที่ข้อมูลต่อไปนี้เป็นจริง: false + Anything = false จริง + ไม่ได้กำหนด = จริง จริง + จริง = จริง ไม่ได้กำหนด + ไม่ได้กำหนด = …

2
hierarchyid CLR โอเพ่นซอร์สหรือไม่
ลำดับชั้นในตัวคือ CLR ที่เก็บพา ธ ในรูปแบบไบนารีที่มีประสิทธิภาพและมีฟังก์ชันการทำงานที่มีประโยชน์อื่น ๆ โชคไม่ดีที่มีขีด จำกัด ว่าเส้นทางที่นำเสนอจะมีความลึกเพียงใดและเป็น ~ 1427 สำหรับต้นไม้ไบนารี ฉันต้องการเพิ่มขีด จำกัด นั้นสำหรับแอปพลิเคชันที่มีอยู่ที่ซับซ้อนซึ่งผูกพันกับขีด จำกัด นี้ ฉันไม่ต้องการเปลี่ยนอินเทอร์เฟซของประเภท ฉันไม่มั่นใจว่าฉันสามารถดึงการเปลี่ยนอินเทอร์เฟซของประเภทนั้นได้โดยไม่ต้องแนะนำข้อบกพร่องเล็กน้อยให้กับโค้ดทั้งหมดที่จะต้องเปลี่ยนตามผล ฉันสามารถ (ในทางทฤษฎี) สร้าง "binhierarchyid" CLR UDT ที่ใช้อินเทอร์เฟซเดียวกับ hierarchyid แต่รองรับเฉพาะต้นไม้ไบนารี ที่ควรได้รับความลึกของฉัน ~ 7000 ในขณะที่ยังคงอยู่ภายในวงเงิน 900 ไบต์ ไม่แน่ใจว่ากิจการขนาดใหญ่จะเป็นเช่นไร มีแหล่งที่มาของลำดับชั้นนี้ CLR อยู่ที่ใดที่หนึ่งหรือไม่เพื่อที่ฉันจะสามารถสร้างของตัวเองโดยใช้โครงสร้างที่รองรับโครงสร้างที่ลึกกว่าได้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.